对于正常的登出用户,只要在登出函数中,写一句update的sql更新用户状态即可。
对于非正常登出的情况,我一般采用如下方法:
1、数据库,用户表,设置,isonline,update_time字段
2、网站前台使用jquery,ajax,间隔多长时间执行sql,更新update_time的时间为当前时间
3、网站后台使用定时任务,定时查询在线用户,比较update_time与当前时间的间隔超过多长时间的更新用户在线状态为离线
细节:isonline:用户在线状态,0离线,1在线;
对于用户数量庞大的系统,将以上方法放在redis等中间件去实现,应该也是足够用了。