【问题标题】:Zend Framework Sessions Being LostZend 框架会话丢失
【发布时间】:2011-05-26 19:29:37
【问题描述】:

我正在使用会话将商品存储在购物车中。我可以创建和保持会话,但有一些奇怪的问题:

  1. 当我在 Firefox(不是整个浏览器)中关闭 选项卡 时,会话似乎已丢失。有时它不会发生,但通常会发生。

  2. 每次我刷新页面或转到另一个页面时,会话 ID 都会更改为新的。我已经通过使用浏览器和服务器查看 cookie 确认了这一点。此外,一次最多可以在服务器上存储 4 个会话。这一切都是正常的行为吗?

  3. 会话似乎随机丢失...可能是几分钟或一个多小时。

我只是按照 Zend 手册进行操作,但没有解决任何问题。在引导程序中,我还有 Session::start() 和 Session::rememberMe()。我对会话使用普通文件存储,只是存储在 /var/lib/php5 中,我认为这是 Zend 框架喜欢放置的地方。

感谢任何指导

【问题讨论】:

  • 您是使用 cookie 进行会话还是仅使用 http?

标签: php zend-framework session


【解决方案1】:

检查您的 PHP 垃圾清理时间 - session.gc_maxlifetime。如果它很短,它会从您的眼皮底下删除您的会话文件并使其显得“随机”。

默认值为 24 分钟(1440 秒)

这应该设置为(或大于)您在应用程序中设置的 cookie 生命周期 (session.cookie_lifetime)。

【讨论】:

    【解决方案2】:

    如果会话数据保持不变,但 ID 正在更改,则有可能在某处调用 session_regenerate_id()

    【讨论】:

      【解决方案3】:

      我以前遇到过这种情况,你会想要在开始会话的地方做这样的事情,对我来说这是在我的 Bootstrap.php 中

          if (!empty($_REQUEST['PHPSESSID'])) {
              Zend_Session::setId($_REQUEST['PHPSESSID']);
          }
      
          Zend_Session::start();
      

      这应该可以解决问题。当用户有一个会话时,它通常会随每个请求一起传递。

      【讨论】:

        猜你喜欢
        • 2011-05-26
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        • 2017-02-04
        • 2010-12-02
        • 2017-04-24
        • 2012-08-05
        • 2010-12-29
        相关资源
        最近更新 更多