繁体   English   中英

Zend框架会议被遗忘

[英]Zend Framework Sessions Being Lost

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

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

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

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

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

谢谢你的任何指示

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

检查PHP的垃圾清理时间 - session.gc_maxlifetime 如果它很短,它会从你的鼻子下面删除你的会话文件并使其显示为“随机”。

默认值为24分钟(1440秒)

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

我以前遇到过这种情况,你会想要在这里开始你的会话,对我来说这是我的Bootstrap.php

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

    Zend_Session::start();

这应该可以解决问题。 当用户有会话时,通常会在每次请求时传递。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM