不要理会时区之间的差异。没必要
每当用户访问页面时,最后一次更新其在用户表的记录中的字段。然后查询最近5分钟内具有最后更新时间的所有用户。除此之外,它们被认为是“离线”。
如果您使用服务器时间,则可以通过MySQL中的NOW()函数来计算时区之间的时差。
这是跟踪当前在线用户数的标准方法(意思是,在最近几分钟内处于活动状态)。
不断更新
如果您想知道它们即使没有从一个页面跳到另一个页面也仍然处于活动状态,请添加一些Javascript,每60秒左右ping您的服务器,以使您知道它们仍然有效。它的工作方式与我最初的建议相同,但是它将更新您的记录,而无需他们至少每五分钟疯狂地浏览您的网站一次。
var stillAlive = setInterval(function () { $.get("stillAlive.php");}, 60000);


