显示用户联机状态



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

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

  • 如果我使用onlineUsers创建一个sql表,并在每个特定页面或每个x页面上更新该表(以防止过多的sql更新),那么自上次活动以来,这肯定会给我一个非常精确的负数。但这会造成太多与数据库的连接,这最终会减慢网站的速度。

  • 我可以通过制作一些聪明的等式来尽量减少这个问题,只让用户更新他们的onlineUsers行,每次点击100页,这不需要php的太多资源,但这仍然是一种糟糕的方法。

  • 我还可以以某种方式集成某种croplist系统,它每10分钟检查一次在线用户,并更新所有表格。但我不确定这会如何实现,也不知道它会如何检查哪些用户在过去10分钟内一直处于活动状态,而不使用他们的id更新任何表行。

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

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

感谢您的帮助:)

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

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

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

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

我也可以以某种方式集成某种croplist系统每10分钟检查一次哪些用户在线,并更新所有的桌子。但我不确定结果会如何,会如何检查哪些用户在过去10分钟内一直处于活动状态,而没有实际上用它们的id更新任何表行。

这太夸张了。

最新更新