2011-11-26 21 views
1

我將簡要說明我打算做什麼。客戶端不再存在時刪除會話

兩個人在網頁上建立了PHP會話。一個人離開該頁面,另一個人仍然在場。 60秒後,離開的人需要終止整個會話(如超時)。

我一直在做的是讓每個人登錄頁面,通過AJAX請求作爲ping定時器,並且ping定時器等待,直到斷開連接的人的最後ping超過60秒。然後,它可以消除與退出者關聯的數據文件,但是我不知道如何刪除整個會話,而無需先將當前會話切換到要刪除的會話,刪除它,然後以某種方式切回。

有沒有辦法做到這一點?還是比一系列AJAX請求更高效,更少帶寬的替代方案?

回答

1

據我所知,當你離開一個網站時,你的會話被垃圾回收器自動銷燬,所以這看起來像你不應該擔心的事情。

2

除非你有數百萬用戶留下陳舊的會話文件,否則不要打擾。

如果您需要60秒的超時時間,則將PHP的會話max_lifetime設置爲60秒,並將會話垃圾回收器設置爲相當頻繁地運行。

ini_set('session.gc_maxlifetime', 60); // 60 second lifetime 
ini_set('session.gc_probability', 1); 
ini_set('session_gc.divisor', 100); // garbage collector has 1% chance of running 

與,集電極將自動對傳入命中約1%(1/100)運行,並且它會刪除還沒有在至少60秒被使用的任何會話文件。

+0

那很聰明,很好找!我會在我自己的網站上實現它 –