Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 论坛现有在线用户_Php_Forum_Yii2 - Fatal编程技术网

Php 论坛现有在线用户

Php 论坛现有在线用户,php,forum,yii2,Php,Forum,Yii2,我有自己的PHP论坛脚本(实际上是Yii2),我想向在线用户展示。 如果用户在注销前一直处于活动状态,这将很容易。但事实并非如此。大多数情况下,用户让其计算机登录,但这些计算机未处于活动状态。在这里,我可以使用时间限制(每次请求更新时间并删除超过该时间限制的请求),但这不是过分了吗 有什么流行的/更好的方法来监控论坛中的在线用户吗?一种可能的方法是拦截javascript中的用户界面事件,并向服务器发送一个ajax通知,告知用户仍然在那里。当然,这应该是缓冲的,这样当用户移动鼠标时,您就不会收到

我有自己的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>now-15 min

的用户,而不是阅读一篇很长的论坛帖子,您如何知道有人“离开了他们的机器登录且未激活”?或者这无关紧要?他们会被认为是非活动的吗?在15分钟的非活动后(不是每个请求用户发送他是活动的更新),会将他们标记为非活动的,这样其他用户(正在浏览)就不会看到前一个用户是活动的。我回答了你的问题吗?你回答了,谢谢:)两种方法你可以这样做(从我的头顶)。1.在JavaScript中有一个900秒的倒计时,向服务器发送一个AJAX请求,将用户标记为非活动。2.更新用户在每个页面请求上的最后一个操作。听起来不错。如果没有更好的主意,我想我会选择这个。谢谢我认为它有资格成为其中一个答案,我很乐意投票支持(如果没有更好的想法接受它),这一个也很精彩。谢谢