2012-02-10 71 views
2

我不知道這是否可能。我正在尋找的是事件(如果有的話)發起會議結束。我想以某種方式抓住並在會話結束之前執行我自己的操作。原因是我需要設置一個會話變量,一旦會話過期,我就會失去它。如何檢測會話何時結束。 PHP

我覺得這可能是實現我的目標的一種可能的方式,如果可能的話。這是星期五晚上7點,仍然在辦公室。想象我的興奮試圖找到解決方案。

謝謝你們。

+1

當你陳述你自己時,你覺得它是實現你目標的一個可憐的方法,你能擴展一下你實際的目標嗎? – Leigh 2012-02-11 00:40:25

回答

0

您可以將數據保存在cookie和控制的失效日期:

setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 

http://php.net/manual/en/function.setcookie.php

這樣,你不需要改變常規會話功能,並讓他們正確到期。

+0

我認爲我想達到的目標是最好的解決方案。謝謝。 – 2012-02-13 19:30:08

1

如果您有數據庫訪問,你可以存儲在一個會話表中的會話信息和檢索由特定用戶註冊的最後一個會話變量。

我知道,在保證工作的會話終止之前觸發一個事件沒有可靠的方法。重構數據的處理方式,而不是提供一個簡單的黑客攻擊,這對你來說是最有利的。

2

如果你把你自己的會話保存處理程序來使用,例如數據庫,你可以有垃圾收集,你可以用它來抓取之前刪除數據的相應數據的回調。

session_set_save_handler,特別是gc回調。

0

您可以使用Javascript進行排序。讓服務器提供一個JS函數,該函數將休眠直到會話即將過期。

然而,這並非萬無一失:用戶離開你的頁面,堅韌餅乾的時候,他們沒有遇到你的JS了。當然,你也可以不聯繫,告訴他們當會話過期不管你會說拿到...

你也可以有你的會話「過期」你真的刪除數據面前,有一個自定義處理程序提醒用戶並給他們一個寬限期。第二次銷燬處理程序觸發,實際上刪除數據。

0

從技術上講這是不可能告訴時是由PHP(會話服務器端的cookie)存儲的通話將被殺死。在PHP設置中,可以說cookie必須存活多久,但它可以持續更長的時間。

如果您需要跟蹤它持續多長時間,您應該手動構建會話管理系統而不使用PHP。