PHP会话锁定并使用Memcache存储会话

保罗·布伦德尔

我有一个带有一些img标记的标准html页面,每个标记都指向我们服务器上的php文件。加载php文件后,它将保存一些数据到会话,然后再生成映像。

来自每个脚本的会话中的数据然后在我们的应用程序中的其他脚本中进一步使用。

用于生成图像的php文件以session_start开头,并且在使用本机PHP会话处理程序时,一切似乎都很好用。每次执行均正确完成,并且可以检索完整的会话数据。

如果启用内存缓存来保存会话,则开始出现问题。似乎每个PHP脚本都是在同一时间执行的,因此当保存到会话中时,只有最后一个要执行的脚本实际上存储了任何数据。

在对Memcache进行进一步调查后,我发现最新的稳定版本不支持会话锁定,只有在3.0.4中才引入此功能-http: //pecl.php.net/package/memcache/3.0.4

仅在Beta中使用3.0.4是否安全?

2.2.7中是否有其他替代方法或解决此问题的方法?

如果您想查看代码示例,请告诉我。

谢谢。

科雷

php-memcached扩展支持会话锁定

http://us3.php.net/memcached

http://us1.php.net/manual/en/memcached.sessions.php

memcache和memcached扩展在语法上看起来相似,因此尝试一下可能不会太麻烦。(memcached具有2012-08-07发行的稳定版本2.1.0)。


如果您设置使用memcache 2.2.7,则很可能必须自己设置锁,方法是在会话中设置一些“ session_is_locked”变量,然后在脚本写入会话后释放/取消设置该变量。然后,在继续执行任何写入会话的脚本之前,您始终需要检查该变量是否已设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章