10.09.2008, 09:16 Uhr

Wer ist online

Beliebte Websites haben eine Menge Besucher. Das darf man auch zeigen – eine Funktion, von der besonders Foren gern Gebrauch machen.
Beliebte Websites haben eine Menge Besucher. Das darf man auch zeigen – eine Funktion, von der besonders Foren gern Gebrauch machen.
Das folgende PHP-Skript bringt gerade einmal 18 Zeilen auf die Waage. Es speichert pro Besucher ein so genanntes Session-Cookie auf dem Server. Das erspart den Einsatz einerSQL-Datenbank. Die Session-Methode hat einen weiteren Vorteil, denn nach einer bestimmten Zeit der Nicht-Benutzung werden alte Session-Cookies automatisch gelöscht und nicht mehr mitgezählt – das macht das manuelle Löschen überflüssig:
<?php
session_save_path("/server/pfad/countuser");
session_start();
function userzaehlen(){
if ( $directory_handle = opendir( session_save_path() ) ) {
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) ) {
if($file != '.' && $file != '..'){
$count++;
}
}
closedir($directory_handle);
return $count;
}
else {
return false; }
}
echo 'Anzahl User online: ' .userzaehlen() . '<br>';
?>
Die zweite Zeile: session_save_path("/server/pfad/countuser"); ist nicht unbedingt wichtig, sie definiert den exakten Ort auf dem Server, wo die Session-Daten gespeichert werden. Lassen Sie die Zeile weg, so werden die Daten auf Linux-Rechnern standardmäßig im Verzeichnis /tmp gespeichert.
Nutzen auf dem Server mehrere Stellen Session-Cookies, was ja bei gemietetem Webspace vorkommen kann, so werden diese ebenfalls mitgezählt und verfälschen das Ergebnis. Um das zu vermeiden, geben wir einen Pfad für das Skript an. Die nächste Zeile fügt eine neue Session hinzu oder aktualisiert eine bestehende. Die Funktion userzaehlen( ) zählt schließlich alle gespeicherten Session-Cookies innerhalb des Ordners und gibt diese an den Browser aus.
Standardmäßig bleiben Sessions 1440 Sekunden gespeichert, also genau 24 Minuten. Sie können das in der Datei php.ini Ihres Webservers ändern. Geht das nicht oder wollen Sie den Wert beibehalten, müssen Sie veraltete Sessions manuell herausfiltern. Ersetzen Sie dafür die Zeile
count++;
durch diese
if(time()-fileatime(session_save_path() . '/' . $file) &lt; (3 * 60)) { $count++; }

Der Wert (3 * 60) bestimmt in Minuten, wie lange ein Besucher als aktiv gilt, hier also 3 Minuten gleich 180 Sekunden. Der Einbau des kleinen Skripts ist an jeder beliebigen Stelle innerhalb einer Seite möglich.



Das könnte Sie auch interessieren