显示用户在线状态

时间:2013-02-18 23:44:48

标签: php sql

我希望显示我网站用户的在线状态。 我不需要显示最后一个活动的确切分钟。但肯定会显示用户过去是否有任何活动说5-10分钟。

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

  • 如果我要用onlineUsers创建一个sql表,并在每个特定页面或每个x页面上更新表格(以防止太多的sql更新)那肯定会给我一个非常精确的编号最后一项活动。但这会导致太多 与数据库的连接,最终会减慢网站的速度。

  • 我可以通过制作一些智能方程式来最小化这个问题,只是让用户更新他们的onlineUsers行,每次说100页点击,这不需要来自php的大量资源,但它仍然是一个脾气暴躁这样做..

  • 我还可以以某种方式集成某种croplist系统,每隔10分钟检查一次,哪些是在线用户,并更新了所有表格。但是我不确定如何解决这个问题,如何检查哪些用户在过去10分钟内确实处于活动状态,而没有实际更新任何带有id的表行。

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

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

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

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

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

  

我可以通过制作一些智能方程式来最小化这个问题,   只让用户更新他们的onlineUsers行,每说100页   点击。

按页面点击我假设您的意思是页面请求。这不是一个坏主意恕我直言:如果用户在每8分钟的一段时间内加载页面3次,则每次请求都应该更新。

  

我还可以某种方式整合某种croplist系统   每10分钟检查一次,哪些用户在线并更新   所有的表格。但是我不确定那会怎么样,怎么会这样   检查哪些用户在过去10分钟内确切活跃,没有   实际上用他们的id更新任何表行。

这只是一种矫枉过正。