一尘不染

确定用户是否在线的最简单方法是什么?(PHP / MYSQL)

mysql

有没有一种方法可以使会话中断以了解用户是否在线?

即:使用登录名,设置一个$ _SESSION变量,用户超时cookie垃圾收集器更新数据库以将其状态更新为脱机。

EDIT:我想要一个不涉及时间或日期的解决方案。我希望某些东西可以参加会议或类似的活动。猜测某人是否在线并不能满足我的需求。


阅读 168

收藏
2020-05-17

共1个答案

一尘不染

不要理会时区之间的差异。没必要

每当用户访问页面时,最后一次更新其在用户表的记录中的字段。然后查询最近5分钟内具有最后更新时间的所有用户。除此之外,它们被认为是“离线”。

如果您使用服务器时间,则可以通过MySQL中的NOW()函数来计算时区之间的时差。

这是跟踪当前在线用户数的标准方法(意思是,在最近几分钟内处于活动状态)。

不断更新

如果您想知道它们即使没有从一个页面跳到另一个页面也仍然处于活动状态,请添加一些JavaScript,每60秒左右ping您的服务器,以使您知道它们仍然有效。它的工作方式与我最初的建议相同,但是它将更新您的记录,而无需他们至少每五分钟疯狂地浏览您的网站一次。

var stillAlive = setInterval(function () {
    /* XHR back to server
       Example uses jQuery */
    $.get("stillAlive.php");
}, 60000);
2020-05-17