memcached - php 实现 memcache 存储 session 的问题
然后自定义类 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怎么判断图片类型
推荐阅读
-
利用Memcached在php下实现session机制 替换PHP的原生session支持
-
在php中设置session用memcache来存储的方法总结
-
PHP实现分布式memcache设置web集群session同步的方法
-
解析php中session的实现原理以及大网站应用应注意的问题
-
PHP中使用memcache存储session的三种配置方法
-
通过memcache实现php的session共享
-
基于php使用memcache存储session的详解
-
基于php使用memcache存储session的详解_PHP教程
-
Zend Framework实现将session存储在memcache中的方法_php实例
-
ThinkPHP框架实现session跨域问题的解决方法_PHP教程