java - 根据一张登录登出日志表计算每个用户在线时长,求个思路

查看:1527
本文介绍了java - 根据一张登录登出日志表计算每个用户在线时长,求个思路的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有一张日志表,记录着每个用户的操作日志信息,例如登录或注销,每个操作都有对应的createtime,以及当前的userName

  • 需求如下:

    • 统计每个用户在一天内在线时长(登录到注销这段时间,可能一天登录注销多次)

    • 如果用户电脑直接关机,或者非正常关闭系统,这时日志表不会产生注销日志,所以将用户最后一次的操作日志(可能是增删改查)作为注销时间,进行在线时长的计算

  • 疑问:

    • 我觉得在日志记录的时候需要记录每次会话的sessionId,否则无法进行上面计算?

解决方案

不需要记录sessionid,你想用sessionid来记录非正常退出最后一次操作时间?
针对同一个用户登录的上一条数据一定是退出操作
1.正常退出,下边一条一定是登录
2.普通操作(增删改查)后非正常关闭,下一次也一定是登录操作

所以一次登录时间长度为本次登录时间--下次登录前一条记录的时间

但是如果用户非正常关闭后没在登录就需要单独处理,比如sessionid20分钟没操作就过期,就查看最后一条记录距离当前是否超过20分钟,超过就认为已经非正常退出。

这篇关于java - 根据一张登录登出日志表计算每个用户在线时长,求个思路的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆