如何做聊天系统中 用户是否在线功能呢

#1 温作权

我想看哪些用户当前是否在线的,怎么做呢??

2011-12-20 23:27:07

#2 jake

1. 建个在线表,内存表最好,字段主要有 用户名,活动时间(时间戳)
2. 每次用户访问页面,都find一次在线表,看看是否已经在表内有记录,有则update活动时间为当前时间,无则create一条新纪录,活动时间为当前时间。
3. 每次访问会另外有个操作,就是findAll全部的在线记录,把“活动时间”小于当前时间 n 分钟以上的用户delete掉。也就是在线表只会存 n 分钟内在线的用户。这个操作也可以在“查在线表”的时候再进行。
4. 查在线表就知道有多少人在线了。

2011-12-21 09:11:05

#3 温作权

如何建在线表呢?是不是每个用户登录都每次登录都插入表中,还有活动时间是用什么方法记录的?

2011-12-21 16:28:24

#4 jake

用phpmyadmin可以建在线表,或者写create table命令

每次用户登录,和访问页面都要检查一次表(存在就更新,不存在就新建),上面已经说过了。

活动时间可以用时间戳,或者是datetime格式。

2011-12-21 18:34:20

#5 温作权

回复 4 jake


    OO,谢谢你的回复,大概明白了。我是用你们的speedphp 开发的,所有都是继承spController类,用户每次访问页面都更新 查询在线表。我能不能写在spController类的__construct里,这样能够达到目的吗?

2011-12-22 09:49:09

#6 jake

建议全部controller继承一个父类,然后父类再继承spController,在父类的__construct里面写全局的操作

搜索论坛有相关代码

2011-12-22 13:03:42

#7 温作权

回复 6 jake


    好的谢谢

2011-12-22 14:27:48

#8 funny_wen

用memcache保存在线的人也是不错的选择 哈哈

2013-06-26 08:48:47