【问题标题】:Symfony2 session loss on one specific machine一台特定机器上的 Symfony2 会话丢失
【发布时间】:2012-10-27 06:30:32
【问题描述】:

我在我的一台开发机器上不断丢失会话。起初它会在几个随机时刻发生,但问题变得更糟,现在它在登录后立即发生。

我可以看到登陆网站时创建了一个会话文件,登录时创建了一个(包含适当的角色等),之后直接创建了一个(没有身份验证信息)有效地将我注销。

它只发生在一台开发机器上,在另一台开发机器和生产中一切都很好。

有人知道吗?

更新:

事实证明,LIIPImagineBundle 以某种方式破坏了我的设置。只要我不为捆绑包创建可写文件夹(/media/cache),一切都很好(除了图像)。一旦我创建了文件夹,一切都会再次中断。有谁知道为什么会这样?

【问题讨论】:

  • 是其他站点或项目在您的开发服务器上运行而不会丢失会话
  • 现在我无法在本地机器上进行身份验证。当我尝试注册时,我收到一个无效的 csrf 令牌错误。生产中的代码相同,没问题..我还安装了不同的php版本,没有任何成功
  • 请发布您的 config.yml 和 config_dev.yml(显然隐藏了任何私人信息)。我猜有什么东西将您的会话链接到 IP 或域,这导致了这个问题。也尝试完全删除 app/cache/dev 文件夹。使用控制台命令清除缓存并不总是可靠的。
  • 我刚刚重新安装了 sf,包括 FOSUserBundle,一切正常。所以似乎和我在这台机器上的项目有关..

标签: php session symfony liipimaginebundle


【解决方案1】:

我猜你的服务器会话服务器参数的价值很低。您需要增加这些参数的值。

考虑检查以下参数值

  • session.gc-maxlifetime
  • session.cache_expire

如何增加价值:

ini_set('session.gc_maxlifetime', 60*60*22); //22h

更多讨论和解释可以看here

【讨论】:

    【解决方案2】:

    几周前就有这个问题,在其他一些计算机上是随机的。无法修复它,我切换到基于数据库的会话存储,此后没有任何问题。

    【讨论】:

    • 我很确定您现在遇到了锁定问题 - 因为数据库会话存储很可能会忽略锁定一次读取的会话信息,直到它被写回。但是您可能很幸运,您没有针对相同会话 ID 的并行调用。
    • 是的,这也是我的想法。无论如何,自从我转向基于数据库的会话后,一切都变得更好了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多