我有一个标准的 html 页面,其中有一些 img 标签,每个标签都指向我们服务器上的一个 php 文件。加载 php 文件时,它会在生成图像之前将一些数据保存到会话中。
来自每个脚本的会话中的数据随后将在我们的应用程序中的其他脚本中使用。
生成图像的 php 文件以 session_start 开头,当使用本机 PHP 会话处理程序时,一切似乎都工作得很好。每次执行都正确完成,并且可以检索完整的会话数据。
如果我启用内存缓存来保存会话,则会开始出现问题。看起来每个 PHP 脚本都是同时执行的,因此在保存到会话时,只有最后执行的脚本才实际存储任何数据。
经过对Memcache的进一步调查,我发现最新的稳定版本不支持会话锁定,只有在3.0.4中他们才引入这一点 -http://pecl.php.net/package/memcache/3.0.4 http://pecl.php.net/package/memcache/3.0.4
当 3.0.4 仅处于测试版时,使用它安全吗?
2.2.7 中是否有其他替代方案或方法可以解决此问题?
php-memcached 扩展支持会话锁定
https://www.php.net/memcached https://www.php.net/memcached
https://www.php.net/manual/en/memcached.sessions.php https://www.php.net/manual/en/memcached.sessions.php
memcache 和 memcached 扩展在语法上看起来很相似,因此尝试一下可能不会太令人头疼。 (memcached 2012-08-07 发布了稳定版本 2.1.0)。
如果您决定使用 memcache 2.2.7,您很可能必须通过在会话中设置一些“session_is_locked”变量来自己实现锁定,然后在脚本写入会话后释放/取消设置它。然后,在继续写入会话的任何脚本之前,您始终需要检查该变量是否已设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)