论坛当前在线用户


Forum Current Online users

我有自己的PHP论坛脚本(实际上是Yii2),我想向在线用户展示。如果用户在注销之前一直处于活动状态,这将很容易。但事实并非如此。大多数情况下,用户让他们的机器登录,但它们不是活动的。在这里,我可以使用时间限制(对每个请求续订时间,并删除超过该时间限制的请求),但这不是过分了吗?

有没有流行/更好的方法来监控论坛中的在线用户?

一种可能的方法是截取javascript中的用户界面事件,并向服务器发送用户仍在的ajax通知。当然,这应该是缓冲的,这样当用户移动鼠标时,就不会被请求淹没。类似的东西

$('body').on('keydown mousemove scroll', function() {
     clearTimeout(notifyTimer);
     notifyTimer = setTimeout(function() {
           $.get('my-server.com/user-is-active');
     }, 60 * 1000);
});

在服务器端,使用当前时间戳更新users表中的last-active字段。显示联机用户时,请选择具有last-active > now - 15 min的用户。