首页 > 获取用户在线时间的方法?

获取用户在线时间的方法?

我的想法是设置

last_login
last_active
online_time

三个字段,当用户登录的时候,把lastlogin和lastactive字段的值设置成当前时间,然后当用户浏览了新页面时,更新lastactive的值,最后,在用户下一次登录的时候判断lastactive的值是否和lastlogin相等,如果不想等,则把onlinetime += lastactive-lastlogin

上面的方法有一个缺点就是每次浏览新页面或者有新动作的时候,就要对数据库执行对last_active的更新操作,请问有没有更好的实现方法?


  1. 登录时记录 last_login
  2. 每隔 x 单位的时间(3000毫秒?)向服务器发送请求。接收到请求后记录下来 last_active, 但不直接写入数据库。
  3. 用户登出时记录 last_active 并写入数据库
  4. 或者,当 session 超时或 y 单位时间(10分钟?)内没有收到请求,则记录 last_active,并写入数据库

这样的话就不用每次浏览新页面或者有新动作时写入数据库 缺点是,需要利用类似commet的技术,有点复杂


先储存到 memcached


可以参考Discuz的做法
Discuz在线人数分析

【热门文章】
【热门文章】