首页 > 后端开发 > php教程 > memcached - PHP使用Windows下的Memcache做session_handler莫名其妙丢失

memcached - PHP使用Windows下的Memcache做session_handler莫名其妙丢失

WBOY
发布: 2016-06-06 20:50:56
原创
895 人浏览过

症状

有set_session.php和read_session.php两个文件。访问set_session.php,种下session数据。然后访问read_session.php,发现session数据读取正常。不论5分钟后刷新read_sesion.php还是再在别的文件访问,都正常。
但是如果我按住f5键(注意是按住),大约5秒后松开(也就是说浏览器在短时间内刷新了几十、几百次),read_session.php反馈出来的session就为空。这时拿着session_id去memcache里找,发现该key存在,但value为空。

环境

服务器是Windows Server 2003 32bit。使用XAMPP3.1.0,PHP版本是5.4。PHP配置如下:

session.save_handler = memcache
session.save_path = "127.0.0.1:22003"
session.auto_start = 1
登录后复制
登录后复制

MC版本是1.4.4,从http://downloads.northscale.com/memca... 下载的,DLL是http://windows.php.net/downloads/pecl...

诡异之处

我能确定:内存肯定没有满、没有任何其他人访问这台服务器,也没有其他应用运行在上面。
完完全全同样的xampp/php/mc配置,在我本地的windows7(64bit)上面,就没有任何的问题。如果我把服务器上的session_handler换成files,也没有任何的问题。最后我们怀疑是连接数或者win03方面的问题,发现win03在tcp连接上没有限制,如果是win03内核的问题,我也木有办法了。。╮(╯_╰)╭

这个问题折腾了一整天,最后决定放弃memcache存储,等到换到linux再用mc存储,反正也没什么高负载。但是我们用mc存储其它数据,比如商品啊,分类啊,或者smarty缓存,都很正常,唯独session没法装进去。

回复内容:

症状

有set_session.php和read_session.php两个文件。访问set_session.php,种下session数据。然后访问read_session.php,发现session数据读取正常。不论5分钟后刷新read_sesion.php还是再在别的文件访问,都正常。
但是如果我按住f5键(注意是按住),大约5秒后松开(也就是说浏览器在短时间内刷新了几十、几百次),read_session.php反馈出来的session就为空。这时拿着session_id去memcache里找,发现该key存在,但value为空。

环境

服务器是Windows Server 2003 32bit。使用XAMPP3.1.0,PHP版本是5.4。PHP配置如下:

session.save_handler = memcache
session.save_path = "127.0.0.1:22003"
session.auto_start = 1
登录后复制
登录后复制

MC版本是1.4.4,从http://downloads.northscale.com/memca... 下载的,DLL是http://windows.php.net/downloads/pecl...

诡异之处

我能确定:内存肯定没有满、没有任何其他人访问这台服务器,也没有其他应用运行在上面。
完完全全同样的xampp/php/mc配置,在我本地的windows7(64bit)上面,就没有任何的问题。如果我把服务器上的session_handler换成files,也没有任何的问题。最后我们怀疑是连接数或者win03方面的问题,发现win03在tcp连接上没有限制,如果是win03内核的问题,我也木有办法了。。╮(╯_╰)╭

这个问题折腾了一整天,最后决定放弃memcache存储,等到换到linux再用mc存储,反正也没什么高负载。但是我们用mc存储其它数据,比如商品啊,分类啊,或者smarty缓存,都很正常,唯独session没法装进去。

Memcached在session数超过一定值后不适合用来存储session。

Memcache采用slab内存预分配,固定长度key的数量是有限的,如果数量占满会依据LRU删除key,造成丢失。

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