统计在线人数

统计网站在线人数

拥有回忆 提交于 2020-03-15 08:09:29
如何统计网站的在线人数呢? 首先很简单的思想就是,如果只针对会员用户进行统计,在登录登出时加判断,然后维护一个表(或者其他存储方式)来存储在线会员即可。 但是有个问题就是,对于正常退出的会员当然可以使用这种方式,那如果该会员是关闭了网页或者停电或者其他因素,那如何得知这些情况呢? 1. 维护在线用户表 假设使用数据库来完成这个功能,想要达到最快的速度,就直接使用MYSQL内存表来保存在线会员的记录, 1:当会员登录时(包含自动登录),便去查找该会员是否存在于内存表当中,如果存在,则更新在线表当中的时间,如果不存在,则插入相应数据到内存表当中去 2:在用户退出时,由于没有进行办法实时的更新,因为用户有可能直接关闭网页离开,只能根据时间段来解决这个问题,写一个计划任务,每隔半个小时(或者其他时间),执行一次该程序,该程序主要的作用是扫描当前在线表当中,更新时间是否有小于当前时间10分钟或者多少分钟(这个根据具体情况自定义)的,如果有,则直接删除该条记录,这样便保证了大概的在线人数的统计。 这种做法的缺点,当用户数量很大时,对数据库压力会很大。 2. 使用Redis统计 将第一种方案的数据库改成使用redis,能够减轻数据库的负担,读写也更快。 当然我们可以从另一个角度来看,如果要统计的不仅仅是会员,要统计来访问网站的在线人数,我们可以考虑保存session(详情请查看