2012-06-05 73 views
1
有麻煩

林搞清楚兩件事情有關的會議,瀏覽器,和Magento的(或很可能與此有關的任何購物車)。我明白,默認情況下24分鐘的不活動將會結束一個會話。我也瞭解到,當您完全退出瀏覽器時,該會話也會關閉。瞭解PHP會議

要測試的第二部分,我訪問我的Magento的商店,將產品加入到我的車,並完全退出我的瀏覽器。我重新打開瀏覽器,產品仍在購物車中。這是怎麼回事? PHP垃圾回收器是否只在特定時間運行?我認爲會話會死機,因此無法連接到存儲在我的機器上的cookie。任何幫助表示讚賞。

回答

4

本地PHP會話使用cookie以0到期,這將後立即被關閉瀏覽器窗口中清除。 Magento的會話cookie(如Emi指出的)有3個小時的到期時間,並且會在瀏覽器會話之間保留,所以關閉/打開瀏覽器窗口不會導致會話重新啓動。 Firefox Web開發工具欄或Chrome的開發人員工具將允許您強制清除Cookie並重新啓動會話,如果這是您想要執行的操作。

我也應該注意到,雖然cookie的名稱是不同的,它有一個到期時間,發動機罩的Magento確實使用PHP的本地會話支持下。這意味着php.ini中有關最大會話時間等的設置也會影響Magento的會話。

此外,自Magneto 1.6(和EE 1.11)以來,有一項名爲persistent shopping cart的功能,可爲會話之間維護購物車建立長期Cookie。如果您的測試看到您的會話是否維持正在查看購物車,此功能可能會使您的會話看起來像實際時間長得多。

+0

+1 - 好的答案 – ShaunOReilly

1

服務器真的不能告訴關窗,只是停留在頁面上,或瀏覽各地之間的差異。至少,沒有沒有額外的腳本,這是沒有內置到Magento。如果要測試會話,請等待24分鐘,嘗試其他瀏覽器或清除服務器上的所有會話文件。

1

會話存儲在本地服務器的本地(大多數情況下是在文件系統中,但您可以使用其他類型的數據存儲,如:database,apc,memcached ...),這是在local.xml中配置的。 當存儲在文件系統中,你可以找到他們在/ path_to_site_root在/ var /會話 我相信你有3種型號使用會話:「核心/會話」,「客戶/會話」和「管理/會話」 您也可以配置PHP的垃圾收集器:http://ca.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

當您關閉瀏覽器,如果餅乾已經過期設置爲0,它不會被用於再http://ca.php.net/manual/en/function.setcookie.php Magento的默認cookie被稱爲前端,我認爲它已經過期設置爲至少和小時,你也不能從javascript修改這個cookie,因爲它只是http。