Что именно происходит с созданием нового сеанса, когда расширение PECL php + memcache «теряет» один из своих серверов сеансов memcache? - PullRequest
0 голосов
/ 22 сентября 2011

Быстрое примечание, я не говорю о существующем сеансе, я знаю, они будут потеряны, если сервер memcache переведен в автономный режим.


Представьте себе следующую ситуацию:

а) PHP

b) Расширение PECL memcache (http://pecl.php.net/package/memcache)

c) Настройка PECL memcache в качестве обработчика сеанса

d) Настройка нескольких серверов memcache для этого через session.save_path = "tcp: ..... , tcp: .....";

e) Один из серверов memcache выходит из строя (перезагрузка сервера, остановка демона и т. Д.). Таким образом, на этом этапе у нас все еще будет хотя бы один действующий и работающий сервер memcache.

Как сказанное выше влияет на создание новых сеансов?

Я посмотрел руководство по memcache на http://www.php.net/manual/en/memcache.ini.php, и руководство немного тонкое.

Хотя в нем говорится, что применяются те же параметры, что перечислены в http://www.php.net/manual/en/memcache.addserver.php.

Мы попытались отключить один из наших серверов memcached для тестирования, и наш журнал php начинает заполняться «невозможно записать данные сеанса, проверьте ваш ....».

В настоящее время наша настройка ini для session.save_path выглядит примерно так:

session.save_path = "tcp://xxx.xxx.xxx.xxx:z?persistent=1, tcp://yyy.yyy.yyy.yyy:z?persistent=1";

Итак, подведем итог:

1) Что происходит, когда один из обработчиков сеанса выходит из строя?

2) Есть ли способ настроить это расширение для прозрачной попытки одного из «других» серверов memcache, перечисленных в случае сбоя одного из попыток? Или это делается автоматически?

3) На страницах справочника по настройке среды выполнения memcache @ php.net я вижу параметр "memcache.allow_failover", по умолчанию равный true (вкл.), Это также относится к обработке сеанса? Или только в php вызовы memcache?

Спасибо, любезно.


Дополнительные пояснения, мы используем версию 3.0.6 расширения, расположенную по адресу http://pecl.php.net/package/memcache.

1 Ответ

0 голосов
/ 09 ноября 2011

Кажется, что аварийное переключение в 3.0.x не работает.Я пытался отработать это часами, и отработка отказа сеанса работала только в стабильной ветке (2.2.x).Пробовал 3.0.5, 3.0.4 и оба мне не удавались.

При использовании 3.0.6 - происходит сбой тихо и не возвращает никаких ошибок.При использовании 3.0.4 или 3.0.5 он вызывает ошибки и не возвращает никакого содержимого.

Поэтому я бы предложил использовать свой собственный обработчик сеансов, который инкапсулирует и использует memcache для хранения сеансов.Там вы можете реализовать свой собственный механизм отработки отказа.

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