我想知道这对于中等规模的社交网站是否是一个很好的解决方案。它涉及管理用户的在线/离线指示。我的解决方案是在每个页面上包含一个脚本,首先用时间戳更新当前用户的“最后一个活动”字段,然后我选择在会话过期时间内没有活动的所有用户(但是仍相对于表)并将在线标志(在db中)设置为false。这是一个常用的解决方案,或者当大量用户通过该站点导航时,服务器负载会是多少?有没有更好的解决方案?请注意,我不仅对在线用户的数量感兴趣,而且还对名称感兴趣,因此基于会话的脚本似乎复杂且不准确。
提前致谢!
答案 0 :(得分:1)
这是足够好但更好的是你可以将这些信息存储在activity
表中:对于任何活动用户插入/更新一行user_id
而非活动超过N分钟一行 - 删除行
答案 1 :(得分:1)
存储会话的表应包含名为“LAST_ACTIVITY_DATE”的字段TIMESTAMP。因此,无论何时加载新页面或使用AJAX更新内容,只需使用current_timestamp更新LAST_ACTIVITY_DATE即可。
然后,当您需要获得在线用户时,请在距离Current_timestamp 5分钟内获得last_activity_date的人。
轻松!