mySQL и memcached для сессий PHP? - PullRequest
5 голосов
/ 03 июня 2011

Для веб-сайта с высоким трафиком мы планируем расширить использование двух веб-серверов в настройке высокой доступности.

Одной из проблем, которую нам необходимо решить, является управление сессиями PHP.

Очевидный ответ - перенести обработку сеанса в БД, что просто, и пример кода широко доступен в Интернете.

С другой стороны, мы знаем о преимуществах memcached, но как только происходит сбой узла memcached,пользователи на этом узле потеряют свой сеанс.

Итак, мы думаем о реализации установки, в которой сеансы обрабатываются в memcached по умолчанию, но также записываются в БД.Когда мы получаем memcached MISS, мы пытаемся также извлечь его из БД.

Имеет ли вышесказанное смысл и есть ли примеры реализации, о которых вы знаете?

заранее спасибо

Ответы [ 2 ]

6 голосов
/ 03 июня 2011

Я отсылаю вас к часто цитируемому объяснению Дормандо , как хранить сеансы в MySQL с кэшированием в memcached . оригинальная запись в Живом Журнале более многословна, но более подробно объясняет, почему хранение сессий только в memcached - плохая идея.

Короче говоря:

  • Сначала прочитайте данные сеанса из memcached, посмотрите в MySQL на отсутствие кэша.
  • Запись данных сеанса в memcached при каждом обновлении.
  • Запись в MySQL только в том случае, если данные кэша не были синхронизированы в течение 120 секунд или около того.
  • Запустите периодический скрипт, который проверяет MySQL на наличие истекших сеансов. Для каждого сеанса с истекшим сроком обновляйте из memcached и истекайте только те, которые действительно истекли.
1 голос
/ 03 июня 2011

Сеансы - это временная вещь, не о чем беспокоиться, если раз в месяц memcache-сервер будет выходить из строя и урезать сессии.Я уверен, что вы можете использовать только memcache для сессий, без репликации в БД.

Но если вы все еще хотите записывать сеансы на диск, в качестве существующего решения вы можете использовать Redis :

Redisработает с набором данных в памяти.В зависимости от вашего варианта использования вы можете сохранить его либо выгрузив набор данных на диск

...

Redis также поддерживает trivial-to-установка репликации мастер-подчиненный, с очень быстрой неблокируемой первой синхронизацией, автоматическим переподключением при разделении сети и т. д.

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