Как организовать проверку присутствия зарегистрированного пользователя на сайте?
Запоминаем время последнего запроса юзера (last_request_time). Когда требуется узнать онлайн он или нет прибавляем к last_request_time, скажем, 10 минут.last_request_time + 10 мин > current_time === юзер онлайн
Если этого не достаточно раз в N секунд/минут стучим с клиента для обновления last_request_time
Есть вариант с использованием websockets. Он даёт самую большую точность по детектированию онлайна и наименьшие затраты по ресурсам системы, поскольку веб-сокеты удерживают соединения и имеют состояния.
Подойдёт из php библиотека Ratchet. Либо можно взять node.js или в python Tornado