io per il mio sito ho fatto così:
ho una tabella "users_online" dove salvo "nome pagina vista, data, ip, user id", quando devo vedere se l'utente è online, faccio un controllo cioè che tra la data/ora attuale e quella in "users_online" non sia maggiore di 15 minuti. questo mi assicura che l'utente è online con un errore massimo di 15 minuti.