У меня странная проблема, так как я обновил 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.
Есть 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"
Пожалуйста, убедитесь, что в вашем php.ini сессия такая.
session.save_path = "tcp://127.0.0.1:11211"
или для сокетов Unix
session.save_path = "unix:///var/run/memcached.sock"