我有自己的PHP论坛脚本(实际上是Yii2),我想显示在线用户。如果用户在注销之前一直处于活动状态,这将很容易。但事实并非如此。大多数情况下,用户使计算机保持登录状态,但它们不处于活动状态。在这里,我可以使用时间限制(每次请求更新时间,并删除超过该时间限制的请求),但这不是过分的吗?
论坛中是否有任何流行/更好的方式监视在线用户?
一种可能的方法是在javascript中拦截用户界面事件,然后向用户发送ajax通知,告知用户该用户仍在那儿。当然,应该对此进行缓冲,以便用户移动鼠标时不会被请求淹没。遵循以下原则
$('body').on('keydown mousemove scroll', function() {
clearTimeout(notifyTimer);
notifyTimer = setTimeout(function() {
$.get('my-server.com/user-is-active');
}, 60 * 1000);
});
在服务器端,last-active
使用当前时间戳更新users表中的字段。显示在线用户时,使用选择last-active > now - 15 min
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句