Используйте memcached для laravel на нескольких сайтах - PullRequest
0 голосов
/ 30 декабря 2018

На сервере у меня есть около 25 веб-сайтов, работающих на той же основе на основе laravel.Я хочу изменить драйвер сессии и кеша из файла в memcached.Но это вызывает смешанное кэширование данных.например, я вижу меню с сайта 1 на сайте 2.

Как я могу использовать memcached на нескольких сайтах?

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

Основываясь на идее префикса, я нашел лучшее решение для Laravel.Но почему-то я не могу найти это в интернете.

В файле cache.php я добавил дополнительные параметры ключа с опцией memcached prefix, которая доступна в документации memcached:

'memcached' => [
    'driver'  => 'memcached',
    'servers' => [
        [
            'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100
        ],
    ],
    'options' => [
        Memcached::OPT_PREFIX_KEY => "websitename",
    ],
],

Теперь все сайты могут работать без проблем

0 голосов
/ 31 декабря 2018

Брат, если ты не использовал Memcached с Laravel, то я бы предпочел пойти с Redis. У него более хорошая скорость в работе с Laravel.

0 голосов
/ 30 декабря 2018

Я думаю, что единственный возможный способ сделать это - иметь уникальные ключи кеша для каждого сайта.

Может основываться на уникальном идентификаторе веб-сайта (идентификатор или URL).Я думаю, что логика для получения ключей кеша также может быть немного инкапсулирована.В моей текущей настройке у меня есть что-то похожее, когда ключи кеша различаются в зависимости от локали.

protected function getCacheKey($key, $locale = null)
{
    $prefix = '__app_cache_';
    $suffix = $locale ? "_$locale" : '';

    return $prefix . $key . $suffix;
}

Например, ваша логика может выглядеть примерно так:

protected function getCacheKey($key, Website $website)
{
    $prefix = '__app_cache_';
    $suffix = "_{$website->id}" : '';

    return $prefix . $key . $suffix;
}

, а затем, чтобы получить ключ кэша menu, вы должны сделать что-то вроде этого:

$cache->getCacheKey($menu, $website); 

Это, очевидно, всего лишь пример, и его необходимо адаптировать к вашим конкретным потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...