Php Symfony2-在memcache中存储会话的错误(安全上下文变为空)
我有一个在memcache中存储会话的错误 如果我登录并试图同时打开大约25个不同的页面(不同的标签),那么这个bug就会被复制。有时我的用户会注销。有趣的是,会话被保留,但安全上下文被删除。更有趣的是,这个安全上下文被恢复(可能与其他请求一起)。最有趣的是,如果我设置了默认的文件系统会话存储,那么一切都会正常工作 会话存储在Amazon Elasticache上 如果我在这些请求期间在Amazon上检查我的用户会话,会发生如下情况:Php Symfony2-在memcache中存储会话的错误(安全上下文变为空),php,session,symfony,memcached,Php,Session,Symfony,Memcached,我有一个在memcache中存储会话的错误 如果我登录并试图同时打开大约25个不同的页面(不同的标签),那么这个bug就会被复制。有时我的用户会注销。有趣的是,会话被保留,但安全上下文被删除。更有趣的是,这个安全上下文被恢复(可能与其他请求一起)。最有趣的是,如果我设置了默认的文件系统会话存储,那么一切都会正常工作 会话存储在Amazon Elasticache上 如果我在这些请求期间在Amazon上检查我的用户会话,会发生如下情况: 请求1-我的会话具有sf2\u属性键和\u securit
- 请求1-我的会话具有
属性键和sf2\u
键\u security\u main
- 请求2-我的会话具有
属性键和sf2\u
键\u security\u main
- 请求3-我的会话只有
键sf2
- 请求4-我的会话具有
属性键和sf2\uu
键再次\u security\u main
技术信息
- Symfony版本2.1.0-DEV
如果您需要更多详细信息,请告诉我。Symfony 2.1已结束维护。这意味着在2013年11月生命周期结束之前,不再有bug修复,只有安全修复 您应该更新到Symfony 2.3 LTS,它的维护期为36个月。也许这个问题已经解决了。如果没有,请提出建议
顺便说一句,您可以尝试使用
memcached
处理程序,而不是memcache
。在中提到,问题是由不同的时间引起的,配置为php脚本执行时间和memcache会话锁。我有60秒用于php,15秒用于memcache.session\u lock
那么,引擎盖下发生了什么:
- 脚本A启动、锁定会话,最多需要60秒
- 脚本B启动,等待会话解锁
- 脚本执行15秒后,memcache解锁会话
- 脚本B侵入流并“破坏”会话
因此,我增加了
memcache.session\u lock
时间来匹配php执行时间,问题已经解决了。感谢您的回复。我希望在将项目更新到新版本之前定义一个bug。我知道没有更新并不是那么容易,因为在2.3中有一些强制性的更改和BC中断,在升级之前有一些事情要做。但这是值得的,如果你已经这么做了,你有一个很长的时间不必升级,因为2.3是一个长期支持版本。顺便说一句。您可以中间升级到最新的2.2版本,该版本在2013年11月之前没有BC中断和维护期(包括错误修复)