Salut,
Lorsque l'user se connecte, tu peux modifier un flag en base (par ex. isConnected) à 1, et un champ lastActionDate avec la date de la dernière action (ce qui implique d'enregistrer à minima la date à laquelle l'utilisateur a effectuer des actions spécifiques comme aller sur son profil, poster un commentaire, etc..)
Pour controler quel user est connecté, tu peux te baser sur la lastActionDate (avec une période d'inactivité prédéfinie, par ex. 1h). Tu fais passer un CRON qui check quel user a sa lastActionDate + 1h > currentDate par ex.
Après il y a sûrement d'autres façons de faire, mais perso je ferais ça.