无法写入会话数据,php和memcached相关。

17

我最近尝试在php中使用memcached保存session。我修改了php.ini中的session.save_handler,大部分情况下都能正常工作,会将session保存在其中。但是偶尔会有某些session出现以下奇怪的消息:

PHP警告:未知错误:无法写入会话数据(memcached)。请验证session.save_path的当前设置是否正确(x.x.x.x:11211),位于未知的第0行。

会话数据大小都在1MB以内,还没有发现这些消息出现的规律...可能每分钟会出现几次。网站通常处于中等负载状态,大约有150个并发用户。

4个回答

17
如果您正在使用memcache,则save_path必须具有tcp://前缀。
如果您正在使用memcached,则save_path不应该具有tcp://前缀。

5
答案是Memcached对象的最大值为1MB(默认)。
如果您的数组或对象超过此限制,该对象将被神奇地删除 :)
您会发现所有会话中的项目都已被删除,只是说这一点,因为我自己刚刚经历了这种情况。
我通过以下方式启动Memcached会话服务器来解决它:
memcached -I 10m

0

我在使用docker-compose堆栈上的symfony2和memcached时遇到了类似的问题。

错误信息如下:

警告:无法写入会话数据(用户)。请验证session.save_path的当前设置是否正确

问题出在我的./app/config/parameters.yml文件已经过时了。

请检查您的memcached设置以适应您的需求,例如:

parameters:
    session_memcached.host: '%session_memcached_host%'
    session_memcached.port: '%session_memcached_port%'
    session_memcached.prefix: '%session_memcached_prefix%'
    session_memcached.expire: '%session_memcached_expire%'

0

我相信这与使用memcached扩展有关,在会话之前没有初始化。我切换到使用memcache扩展而不是memcached扩展,它可以正常工作。

session.save_handler = memcache
session.save_path="tcp://192.168.1.103:11211"

1
同样的问题也发生在memcache扩展中。这不是为什么它不起作用的答案,也不是如何修复它的建议。 - avasin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接