所以我正在寫類似於聊天應用程序的東西,並且需要一種方式來檢測用戶何時不再活動。基本上我需要讓該應用的其他用戶知道,如果用戶X離開了該頁面或關閉了瀏覽器,則該用戶X已註銷。對於服務器端腳本來說,除了「我在15分鐘內沒有收到用戶X的請求,所以我認爲他已經出去了嗎?」的任何方法。如何檢測PHP中的聊天腳本的非活動會話?
回答
正如他們在你需要使用AJAX的評論的鏈接說。要做到這一點(在我看來)最簡單的方法是使用jQuery,這裏是下面一個例子:
$(document).ready(function(){
window.setInterval(function(){
initiateSessionCheck();
5000);
function initiateSessionCheck() {
$.ajax({
type : 'POST',
url : 'sessioncheck.php',
success : function(data){
//success
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
//error do something they are no longer active
}
});
}
});
現在您的sessioncheck.php文件,你會想這樣做
session_start();
if (!$_SESSION) { //you could check a session variable explicitly like $_SESSION['user_id'] != ''
$return['error'] = true;
} else {
$return['error'] = false;
}
echo json_encode($return);
這是基本,但它應該做的伎倆!
但這似乎檢查您的會話狀態 - 而不是其他人在房間裏的狀態。意思是如果你和我在說話,我離開,我的會話將關閉,但你怎麼會意識到這一點?服務器如何知道會話正在關閉?在PHP不同意我和你之間的會話 – 2012-01-13 03:23:39
等待我想我得到它 - 這有點保活..我每次的ping到sessionchec的,我會寫信給DB說:「用戶X ping通的‘時間戳’」。 。然後活躍用戶的列表將由他們的最後ping決定......對吧? – 2012-01-13 03:25:30
好吧,您可以使用相同的函數每隔x秒向特定的表寫入一個日期和時間。然後設置一個cron來檢查同一個表,如果日期時間戳已經過了x時間,那麼你可以假設用戶已經離開了,並且沒有活動的會話(他們將不得不離開頁面來殺死ajax調用)。如果會話結束,那麼您可以寫入用戶表中名爲active_session的列(例如),並將其設置爲0(如果它們不是活動的) - 確保它們在登錄時設置爲1。然後在同樣的ajax調用其他用戶也寫日期時間戳記,您 – 2012-01-13 03:40:54
- 1. PHP聊天會話
- 2. 專門用於聊天的PHP會話
- 3. php保持會話活動多天
- 4. 如何檢測活動oracle會話中的高峯負責人?
- 5. 與多個會話使用php聊天
- 6. 聊天Smartsupp,Drupal的腳本
- 7. PHP登錄腳本會話不存活
- 8. 有腳本檢測gnome會話
- 9. ActiveMQ-如何檢測非活動主題
- 10. DIV如何在聊天腳本中滾動?
- 11. PHP如何檢測會話超時?
- 12. 使用SignalR的多重聊天會話
- 13. 在java中建立聊天會話
- 14. PHP腳本檢測jQuery的
- 15. 如何使用php或php會話在聊天頁面中重複發帖?
- 16. NHibernate打開的非活動會話
- 17. PHP聊天框:如何自動更新
- 18. 如何跟蹤Channel API聊天中活動用戶的數量
- 19. PHP會話劫持檢測
- 20. 保持會話活動腳本如何打開它,並關閉
- 21. 獲取與wmi的活動會話(Win32_LogonSession返回非活動/舊會話)
- 22. 如何檢索tomcat實例中的活動會話?
- 23. 方法菜單列表中的活動會話與php會話
- 24. Gmail中的PHP聊天
- 25. 如何檢測會話數組php中的重複值?
- 26. 搜索腳本中的PHP IP檢測
- 27. 我有一個問題,我的PHP的ajax聊天腳本
- 28. Android聊天頭浮動活動
- 29. Oracle中的活動會話
- 30. 在聊天腳本中向下滾動收件人滾動條
邏輯在這裏:http://stackoverflow.com/questions/8806876/1-1-chat-system-using-php-mysql/8807233#8807233 – 2012-01-12 22:14:18
參考這篇文章:http://stackoverflow.com/questions/887919 /如何檢測,如果用戶註銷在php – 2012-01-12 22:16:05