16

我最近尝试在 php 中实现 memcached 以保存会话。我在我的 php.ini 中修改了 session.save_handler 并且在大多数情况下它可以正常工作。会话保存在其中。但是,有时,我会在某些会话中收到这条奇怪的消息:

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

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

4

4 回答 4

17

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

如果您使用的是memcached,则不save_path应有tcp://前缀。

于 2013-08-22T04:06:05.900 回答
5

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

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

您会话中的所有项目都将被删除,只是这样说,因为此时此刻我已经亲身体验了

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

memcached -I 10m
于 2014-11-10T00:48:31.580 回答
0

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

session.save_handler = memcache
session.save_path="tcp://192.168.1.103:11211"
于 2012-11-26T12:08:24.190 回答
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%'
于 2016-03-07T11:43:53.460 回答