如何跟踪已注销的用户,以便他们不会出现在“立即在线”页面中?

时间:2011-11-18 00:37:33

标签: php mysql database

在我的某个网站上,我必须跟踪在线用户。

有一个“登录活动”表,用于跟踪每个用户的登录信息,因此该表中每个用户有多行,每次用户登录时都有一行(以及他们是否实际在该会话中登录了自己)。此表以前用于跟踪在线用户,但不是很准确,因为脚本正在考虑在过去10分钟内登录的任何用户在线,除非他们专门注销,此时插入的行该登录会话将其“登录”列设置为“否”。此解决方案的问题在于,超过10分钟前登录的活跃用户未显示为“在线”。

为了改进这一点,我现在在主用户表中添加了一个“最后一个活动”列,以跟踪每个用户上一次浏览的时间,我正在计算“立即在线”,就像任何用户的最后一次活动不超过10分钟。

但是,如何让那些在过去10分钟内但已注销的用户不会出现在“立即在线”页面?我是否需要为每个用户创建一个包含一行的新表,以便跟踪用户何时登录以及他们是否自行注销?我可以以某种方式使用现有的“登录活动”表,即使它每个用户有多行并查询其最近的行以查看用户是否自行注销(但是我如何检查用户最近的“登录活动”行为大型连接查询中的一个标准?)?有更简单的方法吗?

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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