1

我正在使用 PHP 开发一个聊天应用程序。在这里,我将一个登录信息保存session_id到我的数据库中。当用户注销时,我将其设置session_id为空。session_id因此,通过这种方式,我可以获取其他用户的登录信息。如果聊天框打开,我的脚本每 5 秒检查一次此消息和相应消息。

现在假设用户已经关闭了浏览器本身,那么如何将他从聊天框活动用户列表中删除?

当我们关闭浏览器时,会话将过期。有什么东西我可以追踪到哪些东西session_id当前在特定网站的服务器上都处于活动状态?

或者有没有办法在 PHP 中跟踪所有活跃用户的聊天应用程序?我没有得到我在这里缺少的参数。

请帮我。

4

1 回答 1

3

就像卢卡斯所说的那样。有一个时间戳字段,例如“last_seen”,每 5 秒通过 AJAX 更新一次(无论如何你现在正在做什么)。然后您可能会认为此查询返回的所有用户都处于活动状态:

SELECT * FROM user WHERE last_seen > CURRENT_TIMESTAMP - 30;

并且所有其他人都处于离线状态(关闭浏览器或某事)。

在上面的查询中,我们假设如果用户有 30 秒没有被看到 - 他是离线的。此值可以更低,但必须高于 5 秒(您的刷新间隔),因为更新 last_seen 列时总会有一些延迟。

于 2012-11-16T09:02:21.897 回答