Скорее всего у Вас есть механизм оповещения о событиях для пользователя на странице («пришло новое сообщение», «доставлено», "… подтверждено/отклонено" и т.д.) через AJAX. Если нет — надо сделать. Прикрепите к нему (функционалу) этакий PINGER.
Чтобы не гонять по-пусту запросы каждые 3-5 секунд — проверяйте активность пользователя на странице клиентским JS-скриптом. Например, если пользователь не «трогает» страницу в течение 30 сек (не листает, не двигает «мышкой» и отсутствует ввод с клавиатуры, про «активна» ли вкладка — нужно изучать...) вырубаете «ajax-пингер». Ну а с серверного скрипта уже получить статистику — дело техники.
Алгоритм простой:
1. Очередной переход на страницу -> смотрим cookies/html5-history флаг: если не было записи — шлем запрос на сервер и, если успешно (код 200) ставим cookies/html5-history флаг на стороне клиента. включаем таймер на повторные проверки события.
2. Следим за активностью: нет в течении N-секунд — вырубаем AJAX-отправку, НО НЕ таймер!!! Если появилась активность — включаем AJAX.
Таким образом будут регистрироваться сервером только реально работающие с сайтом люди.