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