新建一张inline表用来单独存放在线用户,字段设置 user_id,update_time,当用户有操作时,先判断表里是否已经有该用户的记录,如果有,就更新update_time字段,如果没有,就添加记录。
每次操作时,都检测并删除失效数据,SQL语句为:
delete from inline where update_time<now()-5*60
至此,统计在线用户直接count inline表就可以了,而且inline表的数据不会很大,比《
用户在线统计方法一》统计的user表要小的多。
这个方法的优点是大大减少了数据库的压力,缺点依然是查询数据模糊,如果用户在看一篇长文,5分钟内没有操作,就会被忽略。