Проблемы с Memcached с Laravel 5.5 в качестве драйвера кэша - PullRequest
0 голосов
/ 30 апреля 2018

Я весь день ломал голову над этим и искал в интернете любую помощь, но я не нашел ее, поэтому вот моя проблема:

У меня есть существующее веб-приложение, использующее Laravel 5.5, и я хочу настроить кэширование с использованием Memcached. Я бы использовал Redis, но так как Laravel не позволяет использовать Redis в качестве драйвера широковещательной рассылки и драйвера кеша, я застрял в Memcached. Я создал новый проект Laravel для тестирования кэширования перед его внедрением в существующий проект. Так вот у меня проблема ...

Я могу сохранить данные в кеше и немедленно вызвать Cache::get('mykey'); по тому же запросу, и данные будут возвращены. Если я прокомментирую Cache::put('mykey', $myData, 10);, а затем обновлю страницу, никаких данных! Я проверял конфигурации снова и снова, и я не вижу никаких ошибок. Что-то, на что я должен указать: Если я запускаю composer dumpautoload -o, то в кеше отображаются данные для нескольких запросов, а затем возвращается значение NULL, поскольку у него 99% предыдущих попыток. Вот как я проверил.

// This queries the database MOST of the time
$value = Cache::rememberForever('users', function() {
    \Log::info('database query');
    return Todo::all();
});

// This almost always returns null
Cache::put('todos', Todo::all(), 10);
$todos  = (Cache::has('todos') ? Cache::get('todos') : null);

// Oddly, this will return true a few times also        
$isAdded = Cache::add('todos', Todo::all(), 10);
if($isAdded)
    \Log::info('Added to cache');

Я проверил, правильно ли установлено мое PHP-расширение memcached и что оно прослушивает порт 11211, поэтому я считаю, что это может быть конфигурация Laravel. Я использовал аутентификацию sasl, но я отключил это, и это не имело никакого значения. Любая помощь будет принята с благодарностью!


UPDATE:

'memcached' => [
        'driver' => 'memcached',
        'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
        'sasl' => [
            env('MEMCACHED_USERNAME'),
            env('MEMCACHED_PASSWORD'),
        ],
        'options' => [
            // Memcached::OPT_CONNECT_TIMEOUT  => 2000,
        ],
        'servers' => [
            [
                'host' => env('MEMCACHED_HOST', '127.0.0.1'),
                'port' => env('MEMCACHED_PORT', 11211),
                'weight' => 100,
            ],
        ],
    ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...