我希望显示我网站用户的在线状态。 我不需要显示最后一个活动的确切分钟。但肯定会显示用户过去是否有任何活动说5-10分钟。
当我考虑创建这个系统时,我遇到的问题如下:
如果我要用onlineUsers创建一个sql表,并在每个特定页面或每个x页面上更新表格(以防止太多的sql更新)那肯定会给我一个非常精确的编号最后一项活动。但这会导致太多 与数据库的连接,最终会减慢网站的速度。
我可以通过制作一些智能方程式来最小化这个问题,只是让用户更新他们的onlineUsers行,每次说100页点击,这不需要来自php的大量资源,但它仍然是一个脾气暴躁这样做..
我还可以以某种方式集成某种croplist系统,每隔10分钟检查一次,哪些是在线用户,并更新了所有表格。但是我不确定如何解决这个问题,如何检查哪些用户在过去10分钟内确实处于活动状态,而没有实际更新任何带有id的表行。
感谢您的帮助:)
答案 0 :(得分:1)
通常,使用的方法是将列添加到名为last_activity
的用户表中,该表在页面加载时更新。这是您可能设法创建的最简单,最可靠的方法。
为了加快速度,你可以创建一个会话var,它保存了上次更新活动列的时间。您可以读取每个用户并检查上次更新是否太远(比方说3分钟)并在此时更新。如果用户在一分钟内刷新页面100次,这将避免100次数据库调用/分钟。
我可以通过制作一些智能方程式来最小化这个问题, 只让用户更新他们的onlineUsers行,每说100页 点击。
按页面点击我假设您的意思是页面请求。这不是一个坏主意恕我直言:如果用户在每8分钟的一段时间内加载页面3次,则每次请求都应该更新。
我还可以某种方式整合某种croplist系统 每10分钟检查一次,哪些用户在线并更新 所有的表格。但是我不确定那会怎么样,怎么会这样 检查哪些用户在过去10分钟内确切活跃,没有 实际上用他们的id更新任何表行。
这只是一种矫枉过正。