Yo lo hago así:
   Código PHP:
    $fichero = "usuarios.txt";
$logout= 900;
$IP = $_SERVER['REMOTE_ADDR'];
$cont = 0;
$res = '';
$fp = fopen($fichero, "r");
$t = time();
if (filesize($fichero) > 0) $content = fread($fp, filesize($fichero));
fclose($fp);
$lineas = split(" ", $content);
for($i = 0; $i < count($lineas); $i++) {
    $datos = split(':', $lineas[$i]);
    $n = $t - $logout;
    if ($datos[0] != $IP && $datos[1] > ($n)) {
        $res .= "$datos[0]:$datos[1] ";
        $cont++;
    }
}
$res .= "$IP:$t ";
$cont++;
$fp = fopen($fichero, "w");
fwrite ($fp, $res);
fclose($fp);
echo "Usuarios conectados: $cont"; 
    
  Tienes que tener creado el fichero "usuarios.txt" y con permisos de escritura. 
Desventaja: Como cuenta por IP, si tienes varios usuarios conectados mediante un proxy te los cuenta como uno sólo. 
Suerte