首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示当前有多少用户在线?

如何显示当前有多少用户在线?
EN

Stack Overflow用户
提问于 2012-04-26 15:58:10
回答 2查看 6.3K关注 0票数 1

我需要向我的用户展示目前在线的其他用户,我本可以维护一个登录和注销日志,基于此,我可以在网上统计总人数,但很多时候用户不注销,因此我的计数将无效。

以下是显示用户在线的标准:

  1. 用户刚刚登录
  2. 用户当前正在查看的页面
  3. 用户有左选项卡打开,但目前正在浏览另一个选项卡
  4. 有选项卡打开,但已最小化web浏览器

以下是不应在线显示使用的标准

  1. 用户已注销;
  2. 用户希望在线显示
  3. 用户关闭了浏览器和选项卡,
  4. 用户关闭了浏览器

G 219

我不知道该怎么做。我在服务器端使用php和mysql和mongo作为数据库,请帮助我.

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-26 16:32:26

有一种方法可以确保用户是“在线”的。要做到这一点,您需要理解,在“联机”中,人们通常指的是用户在中在线的时刻是;虽然检查这一点不容易(甚至不可能),但检查用户是否在x时间内做了任何操作非常容易,这是大多数程序员的选择。

很简单:

为数据库中的每个登录用户创建一个字段,称为last_activity.

  • Every时间--用户访问将last_activity设置为当前time()stamp.

  • You的页面,定义在脱机之前用户可以空闲(而不是浏览任何新页面)的$x秒数。(通常是15分钟、30分钟或1小时),"SELECT * FROM users WHERE last_activity >= ". (time() - $x)

  • You这样的简单查询现在有了一个用户列表,它在$x秒内加载了一个页面。

与其他不同的是,在PHP和web浏览器中,无法确定用户何时关闭了浏览器中的某个页面,因此在技术上不可能知道用户何时关闭了浏览器窗口或退出了网站。

顺便说一句,我撒谎了,有一个方法,但它真的很昂贵,所以请仔细考虑一下,因为它可能会使您的服务器崩溃或类似的事情:

below).

  • Create

  • 在user表中创建last_activity字段(使用AJAX作为javascript代码),而y秒需要update.php (仅是网站每页中Javascript的example).

  • Put )(请考虑y是您可以使用的更大的数字(< 30秒可能是使用当前time()stamp.

  • Do更新last_activity的bad)).

  • Create update.php )--当您想查找在线用户时,使用$x = $y + 1的查询与使用$x = $y + 1之前的查询相同。< code >H 239G 240

使用最新的解决方案,您可以确保每当用户不再在页面上运行AJAX调用时,他也不会运行AJAX调用,然后在y秒内将不再考虑在线调用。这是一个与第一个非常相似的解决方案,但您可以将y设置为比以前的x小。通过这种方式,您可以获得更多关于用户浏览器窗口当前状态的信息,但您的数据库负载要比以前多得多。

票数 11
EN

Stack Overflow用户

发布于 2012-04-26 16:01:31

几乎所有显示用户在线的网站实际上都显示“用户在最后X分钟内在线”。只需跟踪每个用户上次加载页面的时间,并计算最后X分钟中有多少用户这样做(X是您想要考虑的“在线”)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10337050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档