Сохранение переменных сеанса PHP с использованием нескольких серверов memcache

Я использую 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, когда я определяю оба?

0

Решение

Вам нужно установить session_redundancy для расширения Memcache PHP в memcache.ini,

Директива memcache.session_redundancy должна быть равна числу
серверов memcached + 1 для репликации информации о сеансе
на все серверы. Это связано с ошибкой в ​​PHP.

Увидеть эта почта.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]