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