Brukere online

Her er en kort og enkel måte å gjøre dette på. Uten noe form for database eller filer. Vi teller kort og godt antall sessions. Alle mine tester viser at dette funker. Enjoy!!

<?
session_cache_expire (30);

session_start();

function brukere() {
    $count = 0;

    $suksess = opendir(session_save_path());
    if ($suksess == false) return -1;
	//Hvis noe gikk galt returnerer vi -1

    while (($file = readdir($suksess)) != false) {
        if (ereg("^sess", $file)) $count++;
    }
    closedir($suksess);
    return $count;
}

echo "Brukere online: " . brukere() . "<br>";

?>

Funnet på nettet og modifisert av Sindre Mathisen 2002.

Merkelige resultater...

Det dette scriptet egentlig gjør, er å telle antall sessions som blir sendt ut fra siden den ligger på. Siden http er en "stateless" protokoll er det vanskelig å vite NÅR brukereren forlater siden. Scriptet vil ha en viss unøyaktighet fordi den kan telle sessionen til en som har forlatt siden, en viss tid (som bestemmes av serveroppsettet) etterpå. Men etter en kort tid vil dette normalisere seg. Dette kan altså være en forklaring hvis du får noe som "87 brukerne online" på testsiden din :)

Ved feilmelding har du mest sannsynlig ikke tilgang til å kjøre slike script på hosten din. Det du da kan gjøre, er å finne/skrive en løsning som bruker MySQL. Det finnes endel slike script på hotscripts.com.