Начинът, по който го правя, е периодично да пингувам специален манипулатор с помощта на AJAX (веднъж на 30 секунди). Това са много заявки, така че вместо да актуализирам таблицата на онлайн потребителите всеки път с последното посещение, аз актуализирам memcache. Актуализирам записа в базата данни само когато е 5 минути след записа в memcache (можете да изберете по-голямо или по-малко забавяне в зависимост от натоварването). След това задание на cron премахва остарели записи от таблицата с онлайн потребители.
За да проверя дали конкретен потребител е онлайн, просто проверявам неговия мемкеш запис. Грешката никога не е повече от 30 секунди. Базата данни никога не изостава повече от 5 минути, така че резултатите от базата данни също са доста точни.
Също така използвам тези периодични заявки, за да изпращам събития към потребителя.