Достаточно длительное время не могу додумать/догнать как правильно реализовать алгоритм подсчёта времени, проведённого пользователем в онлайне.
Спрашивал разработчиков некоторых сервисов, у которых есть функционал отслеживания онлайна, но мне отвечали как-то фрагментарно, либо односложно, что не позволяло окончательно понять алгоритм и написать его в коде. Понятно, что надо подсчитывать кол-во изменений last_seen (последнего времени посещения/отправки запроса на онлайн) пользователя, что будет являться одной секундой онлайна, но или за какой-то фиксированный интервал (сомнительно), или за тот период, пока online=1 и не станет 0, или как-то по-другому.
Из ответов тех разработчиков и раздумий, вывел несколько возможных вариантов алгоритма:
1. Подсчитываем кол-во изменений last_seen до тех пор, пока online=1 и не станет 0. Например, запросы в 10:00:00; 10:00:05; 10:00:10 дают 3 секунды пользователя в онлайне, дальше оффлайн.
2. Подсчитать время между первым изменением last_seen и последним, пока online=1. Например, пользователь вошёл в 10:00:00, а вышел/перестал менять last_seen в 10:00:25 – даёт, что пробыл в сети 25 секунд.
3. Подсчитать last_seen за фиксированное время (например, 1 мин.), а потом просто суммировать эти изменения/секунды. Например, в сети с 10:00:00, сделал что-то в 10:00:07, ещё сделал в 10:00:59 = 3 секунды. Во второй минуте ещё 5 действий и дальше оффлайн. Получаем, что пробыл 3 + 5 = 8 секунд.
Скажите, пожалуйста, какой же алгоритм правильный? Или, если такого нет, распишите, пожалуйста, нормальную и понятную реализацию функционала подсчёта времени онлайна.
UPD. Судя по ответам, меня не совсем правильно поняли. Я думаю над алгоритмом подсчёта времени онлайна пользователей не своего сайта/проекта, а пользователей ВК, используя VK API. Соответствующие параметры из API ответа ВКонтакте я выше и привёл: online, last_seen и т.д.. Они возвращаются при запросе
users.get при fields=online,last_seen. Время онлайна умеют подсчитывать такие сервисы: vkonline.info, приложение
Время в сети и др. Я хочу понять, как, за какой промежуток и каким алгоритмом они подсчитывают эти минуты и секунды пока человек находится в сети.