如何计算PHP Web应用程序中的在线用户数?

时间:2011-01-05 09:17:07

标签: php mysql

我想在用户个人资料页面上显示他们上次登录网站的时间以及有多少其他用户在线。

3 个答案:

答案 0 :(得分:1)

嗯,你需要做的是跟踪他们上次做某事的时间。

现在,您不希望每次单击链接时都写入数据库,因此您需要在登录时设置$_SESSION['time'] = time();并将该时间写入数据库中的任何字段。访问,然后当他们转到新页面时,在标题中的某个位置,检查当前时间与旧会话时间值,如果已经过了一定时间,请使用新时间更新会话变量和数据库。

然后你可以在大于几分钟之前的时间进行数据库选择计数,并将其作为在线用户数返回,或者,如果你想提供在线用户名,你可以选择用户名或fullname,无论你想要什么,时间大于那么多分钟,并计算返回的行数以获得当前在线用户的数量。

这就是phpBB和其他主要脚本/程序之类的东西通常跟踪谁在线,这就是为什么它只在最近5分钟内在线列出人们。

每次点击都可以写入数据库,但没有真正的理由这样做。

编辑:顺便说一句,如果你想在他们的个人资料或任何或登录时显示用户的旧的最后访问时间,那么当前会话之前的那个,就像他们昨天登录时一样,在登录时将它存储在会话中查看用户/通行证以供日后参考,然后在新的访问时间内在DB中覆盖它。

答案 1 :(得分:0)

没有代码示例的快速回答,因为您没有提供任何代码,我可以根据这些代码进行示例....

  1. 为上次登录时添加一列,并将其命名为lastlogin
  2. 使用lastlogin列存储上次登录时间,这应该在每次有人登录时完成,无论是使用POST还是使用SESSION
  3. 使用lastlogin显示上次登录时间。 E.g John最后登录DD / MM / YY HH:MM:SS
  4. 非常基本上,为了确定谁登录而不使用AJAX,我假设用户每分钟都会更改一次页面,所以请进行查询以获取最后一分钟登录的所有用户。

答案 2 :(得分:0)

在数据库表中添加更多列,说“ online_status ”和“ last_login_time ”。

现在,您可以在登录时从db获取用户的上次登录时间。

用户登录后会更改他的online_status。

要显示在线人数,请使用online_status点击计数查询。

希望这有帮助。