我有这个login.log
文件,我将在MYSQL中导入。我想计算每个用户每天花费的分钟数。我的计划是在每次登录后使用触发器向表中插入时间,当有注销时,触发从now()
减去之前的登录时间并计算新表中的时间。
您如何看待这种方法?
分钟将等于((logout time)-(login time)) + ((logout time)-(login time))
,依此类推。有没有其他方法可以更好或更好地做到这一点?
这是表格的样子:
每位用户可以全天多次登录/退出(connect=login=enter-room
,disconnect=logout=quit
)。
这是日志文件的示例:
5/30/2017 12:00匿名d4dfa596-f02d-40b4-b059-eff86dfe6492连接
5/30/2017 12:00 user46172 d4dfa596-f02d-40b4-b059-eff86dfe6492登录
5/30/2017 12:00 user46172 d4dfa596-f02d-40b4-b059-eff86dfe6492进入房间 -
5/30/2017 12:00匿名72d76b17-a8f0-442a-a860-49483bf72a6e连接
5/30/2017 12:00 guest5528 72d76b17-a8f0-442a-a860-49483bf72a6e登录
5/30/2017 12:00 guest5528 72d76b17-a8f0-442a-a860-49483bf72a6e进入房间 -
5/30/2017 12:00 guest7632 0321676a-f22f-4d2f-acca-b8759e349ab6 disconnect
5/30/2017 12:01 user46172 d4dfa596-f02d-40b4-b059-eff86dfe6492退出房间 -
5/30/2017 12:01 user46172 d4dfa596-f02d-40b4-b059-eff86dfe6492注销
5/30/2017 12:02 jdoe d4dfa596-f02d-40b4-b059-eff86dfe6492登录
5/30/2017 12:02 jdoe d4dfa596-f02d-40b4-b059-eff86dfe6492注销
5/30/2017 12:02 jdoe d4dfa596-f02d-40b4-b059-eff86dfe6492登录
5/30/2017 12:02 jdoe d4dfa596-f02d-40b4-b059-eff86dfe6492进入房间 -
5/30/2017 12:02 Anonymous 186e5eae-d279-4a66-b556-0fa4a5b179d4 connect
答案 0 :(得分:0)
你是如何写日志的?当日志写入时,您可以在登录或注销时插入到表中吗?通过这种方式,您可以避免触发器,这些触发器非常棒,直到其他人接管代码并且想知道操作表时发生了什么魔法!只要您拥有所有登录和退出时间;您可以让查询获取每天的最小值(登录时间)和最大值(退出时间)并计算差异。
我发现最好将所有数据放入日志表中,然后使用查询来提取您需要的内容,即使这些内容被放入另一个“缓存”中。表格可以节省进一步的处理费用。