Nella tabella con gli utenti aggiungi una "colonna" dove salvi il timestamp dell'ultima azione dell'utente
Successivamente per vedere se un utente è online devi fare una query tipo questa
SELECT * FROM utenti WHERE ultima_azione > time()-30
Nella chat aggiungi una funzione che ogni 25 secondi aggiorna il timestamp dell'ultima azione