如何利用数据库实现在线用户统计?

利用数据库中在线用户表来实现在线用户统计,请问如何实现?哪本书上有这个例子?
[b]问题补充:[/b]
如果要是用户直接关闭浏览器呢?请问session却没有及时销毁...
[b]问题补充:[/b]
ywbanm (中级程序员) 2009-06-12

能不能和你交流下,我的QQ:175425669 MSN:akunamotata@msn.com

[color=red]把sessionId和userId记上,用来判断重复的登录.[/color]

先检查useId,如果有了就比较sessionId,不一致的话,就是重复的登录,就不用加了,但是要更新sessionId

深入体验Java Web开发内幕——高级特性
这本书里面有个统计在线用户数的例子

可以在session创建和销毁的时候来更新在线用户表中的数据,把sessionId和userId记上,用来判断重复的登录.

我觉得有两种方式吧
1、根据数据库中用户的登陆状态(假设数据表中有登陆状态这一项),用AJAX的方式每隔多少时间间隔轮询一次,统计登陆状态为登陆的所有用户数。

2、写一个监听器Listener,根据session的创建和销毁来统计在线用户数。

http://fengzhiyin.iteye.com/blog/335982

靠判断用户关闭browser太不靠谱了.
代价太大,再说那么多browser,怎么判断得过来

用户直接关闭browser的问题,只要设置合适的session timeout时间,误差并不是很大,而且对于在线用户数来说,也没必要那么精确。

只能根据一段时间用户没有反应,那就算他不在线了。因为http协议没有连接,所以没有办法真正统计用户数量。如果根据session来判断,也可以。加一个session监听,让它timeout的时候通知一下你。这样就可以判断了。但是如果session timeout时间太长,也不太合适。 这可能就得看你想以什么做为用户在线的标志了。