从mysql获取24小时活动(时间跟踪)

时间:2016-11-25 16:13:39

标签: php mysql charts time-tracking

我们必须跟踪一些用户(员工)在我们网站上花费的时间(后端工具,他们已登录)。

目前我们每隔5分钟将信息保存到MySQL表中(基于活动(打开页面)或显示/读取页面(通过ajax更新程序,每5分钟一次)。

在MySQL中,我们存储用户ID和MySQL时间戳。

+----+---------------------+
| id |      timestamp      |
+----+---------------------+
| 28 | 2016-11-25 15:51:25 |
| 28 | 2016-11-25 15:55:00 |
| 28 | 2016-11-25 16:00:00 |
| 28 | 2016-11-25 16:05:00 |
| 28 | 2016-11-25 16:10:00 |
| 28 | 2016-11-25 16:15:00 |
| 28 | 2016-11-25 16:55:00 |
| 28 | 2016-11-25 17:00:00 |
| 28 | 2016-11-25 17:05:00 |
| 28 | 2016-11-25 17:10:00 |
| 28 | 2016-11-25 17:15:00 |
| 28 | 2016-11-25 17:20:00 |
| 28 | 2016-11-25 17:25:00 |
+----+---------------------+

您建议在给定时间段内为给定用户检索“活动协议”。

即。 “显示所有时间”,用户昨天,上周,上个月一直处于活动状态“

11月25日用户28的结果应该给出如下结果:

2016-11-25 -> 49 minutes
15:51-16:15 (24 min) 
17:00-17:25 (25 min)

从数据库中选择这些时间不是问题,但我们如何将它们与智能格式相结合......

昨天:8小时15分钟, 上周:52小时35分钟, 上个月:175小时45分钟

关于如何获得漂亮的图形表示的“提示”将非常有用:

Weelky "hour" report

1 个答案:

答案 0 :(得分:0)

一种方法是将时间表划分为范围。每个范围将表示用户处于活动状态的时间段。接下来我们需要找到每个范围的时间跨度。可以通过查找范围中最高和最低时间之间的差异来计算时间跨度。然后我们可以为所有范围添加时间跨度。这将给出用户活动的时间量。