без сокетов это видимо только, либо сервер проверяет тайу-аут, или если без крона, то сам пользователь может проверять других участников. Т.е. сам говорит что я ещё тут, обновляя время, и сканирует других участников в таблице
если база мускул, то как-то так можно:

Код:
"SELECT *FROM timeout WHERE last_time < NOW() - INTERVAL 1 MINUTE" // все кто больше минуты не обновлял время
Но такой подход, будет нагружать сервер.