繁体   English   中英

如何跟踪已注销的用户,使其不出现在“立即在线”页面中?

[英]How to keep track of users who have logged off so that they do not appear in the Online Now page?

在我的一个站点上,我必须跟踪在线用户。

有一个“登录活动”表,该表跟踪每个用户的登录,因此该表中每个用户有多行,每次用户登录时都有一行(以及他们是否实际在该会话中退出了)。 该表以前曾用于跟踪在线用户,但不是很准确,因为该脚本会将最近10分钟内登录的任何用户都视为在线用户,除非他们明确注销,这时在此期间插入的行该登录会话的“已登录”列设置为“否”。 该解决方案的问题在于,在10分钟之前登录的活动用户没有显示“在线”。

为了对此进行改进,我现在在主用户表中添加了“最后一次活动”列,以跟踪每个用户的最后一次浏览量的时间,并且我将“立即在线”计算为上次活动为不超过10分钟前。

但是,如何使最近10分钟内有活动但注销的用户不出现在“立即在线”页面上? 我是否需要创建一个新表,每个用户只有一行,以便跟踪用户何时登录以及是否注销自己? 我可以以某种方式使用现有的“登录活动”表,即使该表每个用户有多行并查询其最近的行以查看用户是否注销了自己(但是我将如何检查用户最新的“登录活动”行,如下所示:大型联接查询中的条件之一?)? 有没有更简单的方法?

if ($member['lastactivity'] > (time()-600)){
                //user online code here...
            }else{
                //user offline code here
                }

我有自己的网站,并使用此代码检查过去10分钟内的活动,在我的情况下,我使用它在用户浏览页面中的用户旁边回显在线/离线图像

跟踪当前在线人数和用户的一种解决方案是通过拥有一个表(id / userId / lastModified)来保存已登录的用户,并在用户登录和注销时填充此表。 用户登录但可能关闭浏览器却从未执行注销的情况很可能是一种解决方案,即每x分钟向服务器发送一次AJAX请求,将用户报告为在线。 如果lastModified字段大于x分钟,则可以假定该用户当前未在线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM