2010-04-05 49 views
1

我做在user表中一個小的應用程序,wheich已登錄的功能,更新可用狀態時,系統進入崩潰

我保持登錄用戶可用的狀態,

例如:

我有三個用戶名爲foo1,foo2的,foo3,

當foo1然後未登錄的狀態他可用的狀態也會隨之更新1 UserTable中的,如果他退出那麼他可用狀態變爲0,

像foo2的,和foo3,

此可用狀態flasg,amsimply使用更新操作..no另一大功能,

現在,我要的是,

如果財產以後發生了,當用戶登錄,然後我想使可用狀態爲0,

財產以後手段,我想改變可用狀態爲0,當系統崩潰或瀏覽器崩潰

謝謝 Bharanikumar

回答

1

您可以使用try-catch塊您的代碼/所以 - 在主程序進入點可以插入try塊,並在年底 - 捕獲異常

try 
{ 
    // include main files with functionality 
} 
catch (Exception $e) 
{ 
    // here you can log the exception text $e->getText() 
    // take current user ID and set his status 
    setStatus($_SESSION['user_id']); 
} 
+0

確定如何在Gmail,雅虎正在做..當用戶來網上... – Bharanikumar 2010-04-05 15:28:06

+0

我認爲(也許)谷歌,雅虎等如果最後5分鐘沒有活動,則發送一個小的請求(例如)。使用這個請求,我們知道哪個用戶有實時瀏覽器會話(不會崩潰或關閉),只是頁面在另一個選項卡中打開 – user297994 2010-04-07 14:35:43

0

因爲在系統崩潰後你不能做很多工作,所以你必須定期更新表格,並且跟蹤更新的發生時間。並有另一個過程來監視上次更新的時間。如果記錄沒有在一定的時間內更新並且用戶仍處於活動狀態,則會話或系統因某種原因已斷開連接。我的建議是追蹤最後一次,而不僅僅是使用布爾的Available_Status字段。

0

我不確定您能否確定瀏覽器是否崩潰。你甚至可以在後臺運行一個php腳本(批處理文件調用php)來測試該網站是否還活着,如果你的腳本停下來,將用戶改爲0。但是如果腳本停止了,你是否可以訪問數據庫/ php呢?

1

你需要心跳。這可能是在客戶端機器上運行的(jscript也許),它會定期向服務器發送簡單消息。當服務器收到該消息時,它將重置該用戶上次收到的時間。服務器中的線程定期運行用戶表並檢查心跳超時。如果任何用戶在超時期限內沒有心跳,他們將被註銷。

相關問題