我正在爲我的網站進行聊天。爲此,我需要找出有多少註冊用戶在線。我計算會話的數量並將它們存儲在一個表中。當他們註銷時,他們的名字將從該表中刪除。現在,如果他們不單擊註銷並直接關閉其選項卡,則不會使其脫機。他們的名字仍然存在於表格中。所以要刪除它們,我發現了一個非常複雜的在線算法。它每五分鐘清空一次表格,然後再添加在線人員的姓名。但問題是,這種情況發生時,聊天會中斷。所以我需要一個解決這個問題的方法如何找到在線用戶
Q
如何找到在線用戶
-1
A
回答
4
爲「last active」添加一列。每次用戶執行一些操作(例如,可能包括瀏覽器通過AJAX輪詢更多郵件),您將該列更新爲NOW()
。然後你尋找活躍用戶查詢可以是這樣的:
SELECT user.name FROM user
WHERE DATE_ADD(user.last_active, INTERVAL 5 MINUTE) >= NOW();
刪除舊記錄從上表是好的,但可能是一個可選的增強(視現場負荷)。
0
我覺得有2個解決方案。
1.)保存時間戳並製作一個cronjob。例如,每分鐘或每分鐘2分鐘檢查一次條目,並刪除大於5分鐘的條目。
2.)第二種方式使功能與第1點相同,但在每個頁面調用中運行該功能。但這並不是真正有效的,並且會造成很多負擔。
1
也許看看這個:destroy session on window close?
反而破壞了會議的,你可以執行該刪除了該行的查詢。
+0
也可以使用[onunload](http://www.w3schools.com/jsref/event_onunload.asp)事件。 – ceving
0
您可以輕鬆地檢查活動的會話,如果你存儲在數據庫表中的會話,請檢查PHP手冊http://in.php.net/manual/en/function.session-set-save-handler.php
相關問題
- 1. 如何找到連接用戶的用戶ID到信號R集線器類
- 2. 如何找到一條線
- 3. 如何在用戶離線時發佈到用戶牆上
- 4. 如何找到在Facebook的遊戲的在線用戶javascript sdk 2.1
- 5. 如何在用戶被刪除時返回'未找到用戶'?
- 6. Quickblox:如何找出用戶是否在線?
- 7. Identity.GetUserId()如何找到用戶標識?
- 8. GCM如何找到用戶手機
- 9. 如何找到用戶當前路徑?
- 10. 如何找到用戶當前位置?
- 11. 如何找到用戶錯誤?
- 12. 的Python:如何找到用戶
- 13. 查找用戶是否在線
- 14. 如何找到用戶與傳單找到?
- 15. 辦公室365在線同步,找不到用戶
- 16. Laravel 5.1級「\軟件\」用戶沒有找到,FatalErrorException在EloquentUserProvider.php線126
- 17. 如何在線/折線c上找到相鄰點#
- 18. 如何在任何用戶計算機上找到桌面?
- 19. PHP - 如何根據用戶名找到用戶級別?
- 20. 如何從ASP.Net找到用戶的Windows登錄用戶名?
- 21. 如何知道用戶是否在線?
- 22. 如何創建在線用戶手冊?
- 23. 如何查看在線用戶狀態
- 24. 如何在C#線程指定用戶
- 25. Sails.js。如何計算在線用戶?
- 26. 如何獲取登錄在線用戶?
- 27. 如何檢查用戶是否在線
- 28. 如何跟蹤用戶在線狀態?
- 29. 如何取回在線用戶-MYSQL
- 30. 如何在應用程序被殺後找到用戶位置?
使用http://xmpp.org/ – Katti
爲了搞清楚這個問題多一點,你需要描述你的數據庫表結構以及它們如何相互關聯。 理想情況下,你應該有3張桌子。一個用於用戶詳細信息,一個用於存儲聊天文本,另一個用於存儲活動用戶列表。 您還需要解釋「聊天被中斷」的含義 - 您的意思是用戶丟失了聊天記錄,或者說您的系統清空了表(這意味着某種鎖定),他們無法聊天。 –