php - Symfony2 - 在内存缓存中存储 session 的错误(安全上下文变空)

标签 php session symfony memcached

我在内存缓存中存储 session 时遇到错误。

如果我登录并尝试同时打开大约 25 个不同的页面(不同的选项卡),则会重现该错误。有时我的用户会被注销。有趣的是, session 被保留,但安全上下文被删除。更有趣的是,这个安全上下文被恢复(可能与其他请求一起)。最有趣的是,如果我设置默认文件系统 session 存储 - 一切都会按预期工作。

session 存储在 Amazon Elasticache 上。

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

  • 请求 1 - 我的 session 具有 sf2_ 属性 key 和 _security_main key
  • 请求 2 - 我的 session 具有 sf2_ 属性 key 和 _security_main key
  • 请求 3 - 我的 session 只有 sf2_ key
  • 请求 4 - 我的 session 具有 sf2_ 属性 key 和 _security_main key 再次

我认为这与并发有关。

我尝试过很多不同的事情,但目前我没有想法。非常感谢任何提示!


技术信息

如果您需要更多详细信息,请告诉我。

最佳答案

该问题是由于 php 脚本执行时间和 memcache session 锁定配置的时间不同引起的。我有 60 秒的时间用于 php,15 秒的时间用于 memcache.session_lock

那么,幕后发生了什么:

  • 脚本 A 启动,锁定 session ,最多需要 60 秒
  • 脚本 B 启动,等待 session 解锁
  • 脚本 A 执行 15 秒后,memcache 会解锁 session 。
  • 脚本 B 侵入流程并“破坏” session

所以我增加了 memcache.session_lock 时间来匹配 php 执行时间 - 然后问题就消失了。

关于php - Symfony2 - 在内存缓存中存储 session 的错误(安全上下文变空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739188/

相关文章:

php - 将 PayPal IPN 与 PHP 集成 - cURL 错误 : SSL CA cert

php - 此页面包含以下错误: creates html instead of XML

php - 从 2 个连接表 doctrine/symfony2 中选择列

session - H2数据库WebServer session 超时

javascript - 如何在脚本中使用 session ?

php - 交响乐 : Ordering Entity Type Form by entity relation

php - 如何在 Symfony2 中动态地将 "roles"添加到 "path"?

php - 如何在php fopen中写路径?

php - 在 php 类中返回多个 mysql 结果

javascript - 每个用户只有 1 个 session ID 吗?