Я использую memcache для хранения сессий PHP в течение многих лет, мне это нравится. Производительность хорошая, и она не создает тысячи файлов на диске.
У меня PHP 5.6 работает на Debian.
После Инструкции PHP сессии, вам нужно добавить два, добавить две записи в файл php.ini, чтобы получить сессии, сохраненные в memcache. Что-то вроде этого:
session.save_handler = memcache
session.save_path = "tcp://192.168.1.100:11211"
Я сделал это, отлично работал в течение многих лет.
Что я не могу сделать работу, так это определить несколько серверов. На той же странице документации PHP написано, что вы должны иметь возможность определять несколько серверов следующим образом:
session.save_path = "tcp://192.168.1.100:11211,tcp://192.168.1.101:11211"
Я считаю, что когда вы определяете несколько серверов, PHP должен записывать данные сеанса на каждый сервер, поэтому у вас есть избыточность. Я хочу эту избыточность.
Моя проблема в том, что как только я определяю несколько серверов, PHP перестает работать и выдает ошибку вроде этой:
session_start(): Failed to initialize storage module: memcache (path: tcp://192.168.1.100:11211,tcp:192.168.1.101:11211)
Я могу использовать любой из серверов memcache отдельно с PHP, так что я знаю, что они оба работают, PHP может подключаться к обоим, если они определены по отдельности. Так в чем же проблема PHP, когда я определяю оба?
Вам нужно установить session_redundancy
для расширения Memcache PHP в memcache.ini
,
Директива memcache.session_redundancy должна быть равна числу
серверов memcached + 1 для репликации информации о сеансе
на все серверы. Это связано с ошибкой в PHP.
Увидеть эта почта.
Других решений пока нет …