javascript è da escludere in partenza.

Mentre la soluzione di controllare ad ogni accesso secondo me va bene, anche perchè se non c'è nessuno sul sito, ti rimangono in tabella gli utenti online, ma al primo accesso li cancelli prima di mostrare all'utente che sta accedendo quali sono gli utenti online.

La soluzione alternativa è chiamare uno script in cron.

ciao