我最近尝试在php中实现memcached以保存会话。 我在php.ini中修改了session.save_handler,并且大部分都能正常工作。会话保存在其中。但是,偶尔,我会在某些会话中得到这个奇怪的消息:
PHP警告:未知:无法写入会话数据(memcached)。请在第0行的Unknown中验证session.save_path的当前设置是否正确(x.x.x.x:11211)。
会话数据是相同的,在memcached的1MB屏障下,我还没有看到这个消息出现的模式...可能每分钟几次。该网站通常处于中等负载,同时有150个用户。
答案 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%'