Całkowicie zła logika. $_SESSION to kwestia przypadająca na użytkownika. Sesja jednego użytkownika nie jest współdzielona z sesją innego użytkownika. Pomyśl o tym – bank internetowy napisany w PHP, wszyscy dzielą jedną $_SESSION – każdy zobaczy szczegóły konta każdego.
Zakładając, że korzystasz ze standardowych sesji opartych na plikach PHP, możesz policzyć pliki sesji w dowolnym katalogu, w którym są przechowywane, np.
$users = count(glob(session_save_path() . '/*'));
Zwróć uwagę, że to tylko zlicza pliki sesji — bez wątpienia będzie zawierać nieaktualne/martwe sesje, które nie zostały jeszcze zebrane. Jeśli chcesz rzeczywiście „naprawdę jest teraz online”, musisz przeanalizować każdy plik sesji i zbadać jego zawartość.