Php Symfony2-在memcache中存储会话的错误(安全上下文变为空)

Php Symfony2-在memcache中存储会话的错误(安全上下文变为空),php,session,symfony,memcached,Php,Session,Symfony,Memcached,我有一个在memcache中存储会话的错误 如果我登录并试图同时打开大约25个不同的页面(不同的标签),那么这个bug就会被复制。有时我的用户会注销。有趣的是,会话被保留,但安全上下文被删除。更有趣的是,这个安全上下文被恢复(可能与其他请求一起)。最有趣的是,如果我设置了默认的文件系统会话存储,那么一切都会正常工作 会话存储在Amazon Elasticache上 如果我在这些请求期间在Amazon上检查我的用户会话,会发生如下情况: 请求1-我的会话具有sf2\u属性键和\u securit

我有一个在memcache中存储会话的错误

如果我登录并试图同时打开大约25个不同的页面(不同的标签),那么这个bug就会被复制。有时我的用户会注销。有趣的是,会话被保留,但安全上下文被删除。更有趣的是,这个安全上下文被恢复(可能与其他请求一起)。最有趣的是,如果我设置了默认的文件系统会话存储,那么一切都会正常工作

会话存储在Amazon Elasticache上

如果我在这些请求期间在Amazon上检查我的用户会话,会发生如下情况:

  • 请求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中断和维护期(包括错误修复)