2012-11-11 20 views
2

基本上,當用戶在網站上瀏覽時,php會話不會過期。但是「用戶在網站上瀏覽」意味着有獲取和發佈請求。然而,我不知道是否有新的請求,或者如果一個活動請求足以維持會話...php會話會在發送帖子時到期嗎?

對於instantce,我有一個大文件上傳的郵件。那可能需要幾個小時。會議是否過期?

回答

0

會話的生存期取決於ini設置session.gc-maxlifetime。每次訪問會話(讀取和寫入)都會重置計時器。超時後,當會話垃圾回收器運行時,會話值被銷燬。

默認值是1440,這意味着24分鐘。因此,如果您有至少每24分鐘以任何方式訪問會話的匹配,則會話值將保留。

如果你需要保持比活得更長的會話,你可以用ini_set延長超時(使用session_start()前),例如:

ini_set('session.gc_maxlifetime', 24*60*60); // 24 hours 
+0

感謝您的回答。我知道它持續了24分鐘,但我不想延長這一生(因爲釋放一些內存需要更長的時間)。無論如何,如果我理解的很好,因爲我的上傳正在進行,它會觸發會話,所以即使上傳超過2400萬,它也不會過期。 – Buzut

0

它不應該。通常當我使用$ _SESSION時,它們持續一天左右。但它可能在一些服務器上。在這種情況下,您還需要添加Cookie。使用Cookie,您可以精確地控制該人員可以上網的時間。

+0

對不起,沒有任何關於這個答案是正確的。在標準配置中,會話cookie將保持到瀏覽器關閉。如果您繼續在session.gc-maxlifetime超時內訪問它,會話將無限期地工作。 –

+0

也許這就是爲什麼它會持續一天 - 我從來沒有關閉我的瀏覽器,但它是可配置的,並且cookie的使用壽命很長。所以我沒有太多的錯誤在這個答案。 – Sylus

+0

會話可能仍然存在,但您存儲在其中的信息會消失。實際上,只有會話的ID存儲在cookie中,會話的相關信息位於服務器的內存中。我需要的是相關的信息(在session.gc_maxlifetime中設置的值之後過期)。在默認的session.gc_maxlifetime值之後的一兩天之後,你還在獲取$ _SESSION數組嗎?!導致服務器不知道您的瀏覽器是否關閉或不... – Buzut