我正在为我的网站进行聊天。为此,我需要找出有多少注册用户在线。我计算会话的数量并将它们存储在一个表中。当他们注销时,他们的名字将从该表中删除。现在,如果他们不单击注销并直接关闭其选项卡,则不会使其脱机。他们的名字仍然存在于表格中。所以要删除它们,我发现了一个非常复杂的在线算法。它每五分钟清空一次表格,然后再添加在线人员的姓名。但问题是,这种情况发生时,聊天会中断。所以我需要一个解决这个问题的方法如何找到在线用户
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张桌子。一个用于用户详细信息,一个用于存储聊天文本,另一个用于存储活动用户列表。 您还需要解释“聊天被中断”的含义 - 您的意思是用户丢失了聊天记录,或者说您的系统清空了表(这意味着某种锁定),他们无法聊天。 –