当前位置:Gxlcms > PHP教程 > memcached-php实现memcache存储session的问题

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

时间:2021-07-01 10:21:17 帮助过:22人阅读

首先把 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 后写入了这个空值。

人气教程排行