Как правильно сделать количество онлайн на сайте ? Частично некоторые страницы грузятся через ajax, сайт самописный. Реализовал онлайн через отправку ajax запроса при переходе по страницам, как обычным, так и ajax. Но не уверен что правильно. Сомневаюсь потому что сайт требует оставаться длительное время, т.е. на сайте люди работают. Уникальных посетителей 25т в сутки, но онлайн я вижу максимум 1700 в пик, а так 1000-1200
Что именно вам нужно? Если показометр типа "сейчас на сайте 2123 человек", то проще всего писать в редис какой-нибудь отметки о пользователях, и пересчитывать их время от времени.
Если подробную аналитику - можно прогнать access.log через какой-нибудь анализатор, благо их много разных на все случаи жизни.
В принципе, и первая задача через анализаторы решается, но возможно это лишнее просто.
Еще можно пересчитывать файлы сессий, или если сессии в бд - делать запрос по этой таблице. там же есть даты последнего обновления.
У себя в проекте использую socket.io + redis для таких целей.
Вот краткий пример, в котором при коннекте переменная увеличивается на единицу, а при дисконнекте соответственно уменьшается. Тут же можно записать значение переменно в редис к примеру или файловый кэш.
io.on('connection', function (socket) {
connectCount++;
socket.on('disconnect', function () {
connectCount--;
});
});