我正在使用会话将商品存储在购物车中。我可以创建和持久化会话,但有一些奇怪的问题:
当我在Firefox(而非整个浏览器)中关闭标签时,会话似乎已丢失。有时它不会发生,但通常会发生。
每次刷新页面或转到其他页面时,会话ID都会更改为新页面。我通过浏览器和服务器上的cookie查看了这一点。此外,服务器上一次最多存储4个会话。这一切都是正常行为吗?
会议似乎随机丢失......可能是几分钟或一个多小时。
我只是按照Zend手册,但没有运气解决任何问题。在bootstrap中我还有Session :: start()和Session :: rememberMe()。我正在使用普通文件存储进行会话,只存储在/ var / lib / php5中,我认为这是Zend框架喜欢的地方。
感谢任何方向
答案 0 :(得分:1)
如果会话数据持续存在但ID正在发生变化,则可能会在某处调用session_regenerate_id()。
答案 1 :(得分:0)
检查PHP的垃圾清理时间 - session.gc_maxlifetime
。如果它很短,它会从你的鼻子下面删除你的会话文件并使它显得“随机”。
默认值为24分钟(1440秒)
这应该设置为(或大于)您在应用程序中设置的cookie生存期(session.cookie_lifetime
)。
答案 2 :(得分:0)
我之前遇到过这种情况,你会想要做一些这样的事情,你开始你的会话,对我来说这是我的Bootstrap.php
if (!empty($_REQUEST['PHPSESSID'])) {
Zend_Session::setId($_REQUEST['PHPSESSID']);
}
Zend_Session::start();
这应该可以解决问题。当用户有会话时,通常会在每次请求时传递。