PHP 5.6 сессий + Memcache (d)

У меня странная проблема, так как я обновил PHP с 5,4 до 5,6. Я никогда не видел ошибку сам, но журналы полны каждый день с этим сообщением:

session_write_close (): не удалось записать данные сеанса (memcached). Пожалуйста, проверьте правильность текущего значения session.save_path (127.0.0.1:11211)

Это происходит не всегда, а только для определенных пользователей. И это происходит на трех разных серверах с PHP ~ 5.6 & Memcached на последнем Debian. Я попытался переключить расширение Memcached на Memcache (конечно, с изменением save_handler в php.ini), и проблема все еще сохраняется. Я также попытался отключить блокировку сеанса в php.ini. Эта проблема определенно связана с PHP, потому что я протестировал сам демон Memcached с помощью скрипта Perl, и не было ни одной ошибки соединения.

Все очень долго работало идеально, и у меня появилась эта проблема сразу после обновления PHP, так что это не связано с конфигурацией memcached или чем-то вроде этого. Может я что-то упустил? Может быть, 5.6 требует дополнительных настроек в своем INI-файле? Я просто не могу понять это.

На данный момент я немного застрял, и я надеюсь, что любой может помочь мне советом. Я могу попробовать переключиться обратно на 5.4 или на 5.5, но это не совсем вариант, я бы очень хотел придерживаться 5.6.

6

Решение

Есть 2 расширения для php, Memcache а также Memcached.

Memcached расширение основано на libmemcache, и вы все равно должны его предпочесть.

По моему опыту, текущие версии демона memcache не очень хорошо Memcache расширение. Хранение данных работало, но у меня возникли существенные проблемы с производительностью при записи данных в сеанс после первого запроса (первый запрос для совершенно нового сеанса прошел нормально и быстро, каждый следующий запрос занимал до 10 секунд!). Замена Memcache с Memcached исправил эту конкретную проблему.

Предупреждение: Синтаксис для session.save_path за Memcached было немного по-другому. Я должен был опустить tcp:// или это не будет работать

Таким образом, для Memcached использовать:

session.save_path = "127.0.0.1:11211"

И для Memcache использовать:

session.save_path = "tcp://127.0.0.1:11211"
1

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

Пожалуйста, убедитесь, что в вашем php.ini сессия такая.

session.save_path = "tcp://127.0.0.1:11211"

или для сокетов Unix

session.save_path = "unix:///var/run/memcached.sock"
0

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