论坛当前在线用户

时间:2014-10-27 15:11:46

标签: php forum yii2

我在PHP中有自己的论坛脚本(实际上是Yii2),我想向在线用户展示。 如果用户在注销之前处于活动状态,那将很容易。但事实并非如此。大多数时候用户都会让他们的计算机登录,但他们没有活动。在这里,我可以使用时间限制(更新每个请求的时间并删除超过该时间限制的时间),但这不是过度杀伤吗?

在论坛中是否有任何流行/更好的方式来监控在线用户?

1 个答案:

答案 0 :(得分:3)

一种可能的方法是拦截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