首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示用户在线状态

显示用户在线状态
EN

Stack Overflow用户
提问于 2013-02-18 23:44:48
回答 1查看 596关注 0票数 0

我希望显示我的网站用户的在线状态。我不需要显示最后一次活动的确切细节。但是一定要显示用户在过去是否有过任何活动,比如5-10分钟。

当我考虑创建这个系统时,我遇到的问题如下:

  • 如果我要用onlineUsers创建一个sql表,并更新每个特定页面上的表,或者每一个x页(以防止太多的sql更新),这肯定会给我提供一个非常精确的自上一次活动以来的最小值。但这会导致太多与数据库的连接,这最终会减缓网站的速度。
  • 我可以通过建立一些智能等式来最小化这个问题,只让用户更新他们的onlineUsers行,比如每次点击100页,这不需要来自php的大量资源,但这仍然是一种很不爽的方法。
  • 我还可以以某种方式集成某种耕地系统,每10分钟检查一次,在线的用户,并更新所有的表格。但我不确定这是如何工作的,它将如何检查哪些用户在过去10分钟内确实处于活动状态,而实际上没有用他们的id更新任何表行。

哦,好吧。我敢肯定这样的系统以前已经做过几百次了。因此,应该有人能够告诉我制作这样一个系统的最佳方法,这将需要尽可能少的资源从我的数据库。

  • 编辑*我正在使用Cookies设置用户登录。

谢谢你的帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-19 00:26:32

通常使用的方法是向名为last_activity的用户表中添加一个列,该表在页面加载时得到更新。这是您可以创建的最简单、最可靠的方法。

为了加快速度,您可以创建一个会话var,它保存了上次更新活动列的时间。您可以阅读每个用户,并检查上一次更新是否太远(假设3分钟),并在那一刻更新。如果用户立即刷新页面100次,这将避免100个数据库调用/分钟。

我可以通过创建一些智能等式来最小化这个问题,只让用户更新他们的onlineUsers行,比如每点击100页。

点击页面,我想你指的是页面请求。不,这是个坏主意,IMHO:如果用户每8分钟在一段时间内加载3次页面,那么每个请求都应该更新。

我还可以以某种方式集成某种耕地系统,每10分钟检查一次,在线的用户,并更新所有的表格。但我不确定这是如何工作的,它将如何检查哪些用户在过去10分钟内确实处于活动状态,而实际上没有用他们的id更新任何表行。

那只是过火了。

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

https://stackoverflow.com/questions/14947373

复制
相关文章

相似问题

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