首页 > 后端开发 > php教程 > memcached - php 实现 memcache 存储 session 的问题

memcached - php 实现 memcache 存储 session 的问题

WBOY
发布: 2016-08-04 09:20:44
原创
886 人浏览过

首先把 session.save_handler = user,注意不是 memcache。

然后自定义类 Session 实现 SessionHandlerInterface 接口,创建对象,session_set_save_handler 注册,这样每次比如:

$_SESSION['aaa'] = '123';

的时候,php 就会调用通过 Session->write(),函数中我自己人为往 memcache 中插入 sess- 为前缀,session_id() 为后缀的记录,比如:key = sess-4fqrbhed9f3grq4p4ssbljg867。

这时候有个很奇怪的问题,每次我跟着 $_SESSION['aaa'] = '123'; 这条,去 memcache 中取这个 session_id() 对应的数据时都可以获取到,但是删除 $_SESSION['aaa'] = '123'; 之后 memcache 中数据就被自动删掉了。

回复内容:

首先把 session.save_handler = user,注意不是 memcache。

然后自定义类 Session 实现 SessionHandlerInterface 接口,创建对象,session_set_save_handler 注册,这样每次比如:

$_SESSION['aaa'] = '123';

的时候,php 就会调用通过 Session->write(),函数中我自己人为往 memcache 中插入 sess- 为前缀,session_id() 为后缀的记录,比如:key = sess-4fqrbhed9f3grq4p4ssbljg867。

这时候有个很奇怪的问题,每次我跟着 $_SESSION['aaa'] = '123'; 这条,去 memcache 中取这个 session_id() 对应的数据时都可以获取到,但是删除 $_SESSION['aaa'] = '123'; 之后 memcache 中数据就被自动删掉了。

修改php.ini
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211;tcp://127.0.0.1:11212;tcp://127.0.0.1:11213

已解决,原因是未实现 SessionHandlerInterface::read() 导致刷新后 $_SESSION 被设置为空值,接着导致调用 write 后写入了这个空值。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板