关于论坛在线用户显示模块实现的问题。
关于论坛在线用户显示模块实现的问题。
我的论坛(http://ynwa.yeah.net)关于实现在线用户的模块是这样建立的(只讲原理,由于代码镶嵌在html里面,过于发散,不在这里列出):当用户登陆时(打开我的论坛页面),把用户的登陆时间(精确到秒)记录到数据库该用户的相应列上。每个论坛页面都有一个隐藏的页面,该隐藏页面每隔30秒刷新一次,当用户端的浏览器自动刷新时,把服务器的当前时间更新到登陆时间的列上,同时用服务器的当前时间减去其他在线用户的登陆时间(或者是已经更新的时间),如果差值大于40秒,证明该用户的浏览器已经在远大于30秒的时间内没有刷新页面,也就意味着该用户已经离线。(因为在线的话,客户端的浏览器一定会在30秒内自动刷新以更新登陆时间),同时删除该用户的登陆时间,以表示他离线。实际上,这个功能在我的论坛经过实践成功实现了。但有一个问题我解决不了,就是当最后一个用户离线时,也就是说没有一个客户端打开我论坛的任何页面时,就没有页面会自动刷新了,也就是说,在最后一个用户离线后,如果没有新用户登陆,即使过多长时间,页面也不会更新数据库,把该离线用户的登陆时间删除(我用查看用户的登陆时间列是否为NULL来判断用户是否在线)。那么假设经过2小时后,一个用户登陆论坛,就会发现还有一个用户在线,实际上该用户已经离开了2个小时。
请问这个问题我怎么解决呢?是不是可以在服务器端设定页面的定时刷新,还有其他不干涉服务器端的方法吗?