Ок. Дай да оставим визуализацията за момента на страна и първо да се справим с проблема с това кой е онлайн.
Предлагам следното като решение
При създаване на сесията записваш timestamp в базата данни и в сесията
при рефреш или ако смяна на view-то първото което правиш е да
сравниш текущият timestamp с този в сесията и ако разликата е по-малка от 15 мин. (примерно) и повече от 5 мин. то ъпдейтваш записа в базата
ако е повече от 15мин създаваш нов
нека да видим как би трябвало да ни изглежда табличката
SQL code:
CREATE TABLE `online` (
`id` int(11) NOT NULL,
`name` varchar(64) NOT NULL,
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
така вече имаме някаква примерна таблица
нека да видим стъпка по стъпка какво трябва да става
1. Потребителя се логва
- Към сесията записваме timestamp
- Нов запис към базата данни
2. Потребителя цъка по сайта
- Проверяваме дали са минали повече от 5мин. от последният timestamp в сесията
ако не са минали не правим нищо
3. Потребителя продължава да си цъка по сайта но вече са минали 5 мин от timestamp-а в сесията
- записваме новият timestamp в сесията
- Ъпдейтваме "end_time" с новият timestamp
4. Потребителя пак се цъка някъде и виждаме че от timestamp-а в сесията са минали повече от 15 мин
- Връщаме се на първа точка и я изпълняваме
така в крайна сметка за всеки потребител ще правиш по 1 query в базата на всеки 5 мин за да не се натоварва излишно
и като резултат ще имаш база в която ще се вижда кой, кога и калко време е бил online (+- 5мин)