了解Magento中的PHP会话

时间:2012-06-05 20:50:09

标签: php session magento

我无法弄清楚有关会话,浏览器和Magento(或者可能是任何购物车)的一些事情。据我所知,默认情况下,24分钟不活动会关闭会话。我也理解当你完全退出浏览器时,该会话也会关闭。

为了测试我访问Magento商店的第二部分,将产品添加到我的购物车中,并完全退出浏览器。我重新打开浏览器,产品仍在购物车中。怎么会这样? PHP垃圾收集器是否仅在特定时间运行?我认为会话将​​会死亡,因此无法链接到我的计算机上存储的cookie。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:4)

原生PHP会话使用0到期的cookie,将在浏览器窗口关闭后立即清除。 Magento的会话cookie(如Emi所述)有3小时到期并将在浏览器会话之间保持不变,因此关闭/打开浏览器窗口不会导致会话重新启动。 Firefox Web开发人员工具栏或Chrome的开发人员工具将允许您强行清除cookie并重新启动会话,如果这是您想要做的。

我还应该注意,尽管cookie名称不同并且它有一个到期时间,但Magento确实使用了PHP的本机会话支持。这意味着php.ini中与max session lifetime等相关的设置也会影响Magento的会话。

此外,由于Magneto 1.6(和EE 1.11)有一个名为persistent shopping cart的功能,它建立了一个长期cookie,用于在会话之间维护您的购物车。如果您的测试是为了查看您的会话是否只是在查看购物车,则此功能可能会使您的会话看起来比实际更长。

答案 1 :(得分:1)

服务器无法区分关闭窗口,停留在页面或浏览之间的区别。至少,并非没有额外的脚本,这是没有内置到Magento。如果要测试会话,请等待24分钟,尝试其他浏览器,或清除服务器上的所有会话文件。

答案 2 :(得分:1)

会话存储在站点的服务器本地(大多数情况下在文件系统中,但您可以使用其他类型的数据存储,如:database,apc,memcached ......)这是在local.xml中配置的。 存储在文件系统中时,您可以在/ path_to_site_root / var / sessions下找到它们 我相信你有3个使用会话的模型:'核心/会话','客户/会话'和'管理/会话' 您还可以配置php的垃圾收集器:http://ca.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

当您关闭浏览器时,如果Cookie已过期设置为0,则不再使用http://ca.php.net/manual/en/function.setcookie.php Magento的默认cookie叫做frontend,我认为它已经到期设置为至少和小时,你也不能从javascript修改这个cookie,因为它只是http。