【问题标题】:What is the best way to manage access logs for each user?为每个用户管理访问日志的最佳方式是什么?
【发布时间】:2019-08-06 03:51:11
【问题描述】:

我想知道用户登录服务的历史记录。 我只是想看看用户每天、每周和每月登录的频率。

目前,用户 ID 和连接时间都存储在 DB 表中。

不必要的行太长。

如果有其他好的方法,请参考。

感谢您的关注。

【问题讨论】:

  • “不必要的行太长”是什么意思?使用数据库听起来很合理。
  • @whdals0 :所以您需要每天、每周和每月登录的平均值,对吧?
  • @MrSmith42 数据以 N * 3 的形式堆叠。 (序列,用户标识,时间)。我想知道是否有更有效的方法。
  • @GregorOphey 不平均。我想检查每个用户的登录数据。

标签: algorithm logging


【解决方案1】:

假设语言的解决方案:

您必须为每个用户保留两个数据项:

TimeStamp firstLoginOf(user_id) : returns time stamp of first login for given user
Integer totalLoginsOf(user_id)  : returns total number of logins for given user

数据必须存储在由 user_id 索引的文件或数据库中。 每当相应用户登录时,登录总数就会增加。

然后您可以按如下方式计算所需的数据:

Float loginsPerDay(user_id) {
    return totalLoginsOf(user_id) / asDays( now() - firstLoginOf(user_id) )
}

Float loginsPerWeek(user_id) {
    return totalLoginsOf(user_id) / asWeeks( now() - firstLoginOf(user_id) )
}

Float loginsPerMonth(user_id) {
    return totalLoginsOf(user_id) / asMonths( now() - firstLoginOf(user_id) )
}

【讨论】:

  • 哦,我觉得你的方法很棒。谢谢格雷戈尔。
猜你喜欢
  • 1970-01-01
  • 2016-08-14
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多