>  기사  >  백엔드 개발  >  memcached - php 实现 memcache 存储 session 的问题

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

WBOY
WBOY원래의
2016-08-04 09:20:44840검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.