2012-10-14 122 views
0

我已經爲我的客戶的網站構建聊天腳本。一旦用戶登錄,我設置會話,並通過將聊天狀態設置爲1來更新數據庫中的表。一旦用戶註銷,我將聊天狀態設置爲0,此外,如果用戶關閉瀏覽器的選項卡聊天狀態設置爲0,不再發生聊天。PHP聊天會話

這裏的主要問題是如果用戶的計算機關閉或電源被切斷,如何檢測用戶不能聊天。或者即使用戶打開一個新標籤,而不是關閉標籤,他關閉了瀏覽器?

我被卡住了。預先感謝您

回答

0

或多或少什麼jhonraymos說過。如果這是一個基於PHP的聊天,那麼您無法真正說出連接強制關閉時的情況。簡單地說,有一種方法可以讓聊天超時,我想說。

IE:如果客戶端沒有幾分鐘或幾小時的請求,那麼可以安全地認爲它們不再連接,然後可以將聊天狀態設置爲0。

更新:

道歉,我還沒有看到您的新評論。看另一頁...

session_start(); 
// set timeout period in seconds 
$inactive = 600; 
// check to see if $_SESSION['timeout'] is set 
if(isset($_SESSION['timeout'])) { 
    $session_life = time() - $_SESSION['timeout']; 
    if($session_life > $inactive) 
    { session_destroy(); header("Location: logoutpage.php"); } 
} 
$_SESSION['timeout'] = time(); 

再次道歉,仍然習慣了stackoverflow。

+0

修復了這個意見顯得有點俗氣,再次抱歉。(剛剛殺青前一個答案的通知) – Greyull

+0

這就是我想問的問題,我們如何在時間限制後執行一些代碼?我的意思是如何執行我的查詢以將時間限制後的聊天狀態設置爲0?可以給我一個例子...好吧我看到你評論以上...檢查它 – Anwar

+0

上面的代碼是否適用於諸如互聯網連接丟失,電源關閉等問題? – Anwar

0

只需使用phpmyadmin在MYSQL中創建一個事件,每1分鐘創建一個狀態= 0(更新login_table set status ='0')。

然後使SetInterval每30秒更新狀態= 1。

再拍的setInterval檢查狀態= 1,並檢索所有DIV(這將顯示在線用戶。