日期:2014-05-19  浏览次数:20610 次

浏览器关闭,修改登录状态问题,大神指教....
譬如一个论坛,用户登录时,数据库online字段改为在线状态,当下线是则改为离线状态,

本来正常注销的话可以调用更改状态的方法,但是当用户直接关闭浏览器时就开始出现问题了,

我也可以用js监听浏览器关闭事件,但是碍于总有那么几款rubbish的浏览器不支持,而且这个方法并不周全,

譬如 用户突然 断电了 断网了等不可预知的事件,所以放弃js这种方式,

没办法就在这里来求思路了,大神们,帮帮小弟呗......

分不够可以再+ + +

------解决方案--------------------
用你说的方法+上session超时事件来做?
------解决方案--------------------
这种需求一般要依赖服务器端来做,可以在每个用户登录以后,修改用户状态为登录,记录登录时间,用户状态可以新建一个单独的表来保存,以免频繁访问用户表,每次用户请求以后,记录用户状态为活动,记录最后操作时间,定时扫描这个表的数据,发现最后活动时间与当前时间相比较超过你指定时间时,认为用户已经下线。
------解决方案--------------------
我说个我的思路,共同学习

1、用户登录后,把数据库online字段改为在线,并也把online状态,和时间放在内存(memcached或其他方式)
2、每次用户在论坛上操作的时候,把内存的在线时间改为最后操作时间
3、写一个服务程序,轮询读取内存中各个用户的状态,当发现时间超过比如30分钟,就同时把数据库改为离线,并清空内存数据

使用内存是为了避免频繁更新数据库

肯定有不合理的地方,希望大家一起指正、学习