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

时间:2012-08-24 15:25:17

标签: php memcached

我最近尝试在php中实现memcached以保存会话。 我在php.ini中修改了session.save_handler,并且大部分都能正常工作。会话保存在其中。但是,偶尔,我会在某些会话中得到这个奇怪的消息:

  

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

会话数据是相同的,在memcached的1MB屏障下,我还没有看到这个消息出现的模式...可能每分钟几次。该网站通常处于中等负载,同时有150个用户。

4 个答案:

答案 0 :(得分:17)

如果您使用 memcache ,则save_path必须具有tcp://前缀。

如果您使用 memcached ,那么save_path不应该有tcp://前缀。

答案 1 :(得分:5)

答案是Memcached对象最大可以为1MB(默认)

如果您的数组或对象超出此限制,该对象将被神奇地删除:)

会话中的所有项目都将被移除,只是这样说,因为此时此刻我已经体验过我的自我

我通过像这样启动Memcached Session服务器来解决它

memcached -I 10m

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

错误说明:

  

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

问题是我有一个过时的./app/config/parameters.yml

检查您的memchached设置以满足您的需求,例如:

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%'