Получите 24-часовую активность от mysql (отслеживание времени)

Мы должны отслеживать время, которое некоторые пользователи (сотрудники) проводят на нашем веб-сайте (Backend Tool, они вошли в систему).

В настоящее время мы сохраняем информацию в MySQL Table каждые 5 минут (в зависимости от активности (открытая страница) или показа / чтения страницы (через программу обновления ajax, запускаемую каждые 5 минут).

В MySQL мы храним идентификатор пользователя и метку времени 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 |
+----+---------------------+

Что бы вы посоветовали получить «протокол активности» для данного пользователя в течение определенного периода времени.

то есть «показывать все времена», где пользователь был активен вчера, на прошлой неделе, в прошлом месяце «

Результат для 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

0

Решение

Одним из подходов может быть разделение временного списка на диапазоны. Каждый диапазон будет представлять период времени, в течение которого пользователь был активен. Далее нам нужно найти промежуток времени для каждого диапазона. Промежуток времени может быть рассчитан путем нахождения разницы между самым высоким и самым низким временем в диапазоне. Затем мы можем добавить промежутки времени для всех диапазонов. Это даст количество времени, в течение которого пользователь был активен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]