AWStats-Logfiles mit PHP auslesen
Beschreibung
AWStats ist ein Open-Source-Tool, das die Logfiles von Apache-Servern auswertet.Mit diesem PHP-Codeschnipselchen lassen sich AWStats-Ausgaben auslesen und daraus gewonnen Daten z.B. für einen Besucherzähler verwenden.
Funktionsweise
Im Folgenden wird davon ausgegangen, dass sich die AWStats-Dateien im Ordner./logs
des in htdocs befinden.
Also, wenn die URL der Website beispielsweise http:\\www.cypax.net\ lautet, in
http://www.cypax.net/logs/
Für andere Verzeichnisse ist diese Pfadangabe im Code unten entsprechend zu ändern!
In diesem Verzeichnis werden von AWStats die monatlichen Auswertungen abgespeichert.
Und zwar typischerweise in der Form
awstats + MONAT + JAHR + . + URL + .txt
. Somit z.B.: awstats052006.cypax.net.txt
Dieses Codeschnipselchen ermittelt aus allen Logfiles das Datum und die Uhrzeit des letzten Zugriffes sowie die Anzahl der Besuche.
Die Vorgehensweise ist wie folgend:
- Lese jede *.txt Datei ein und extrahiere aus dem Dateinamen den Monat und das Jahr
- Untersuche die Datei zeilenweise
- Wird das Schlüsselwort
LastTime
(letzter Zugriff) gefunden, wird der dahinterstehende Wert in einer Variablen gespeichert. Anhand der Monats- und Jahresangabe kann festgestellt werden, ob dieser Zeitstempel aktueller (jünger) als die, anderer Logfiles ist - Mit dem Schlüsselwort
TotalUnique
werden die Besuche innerhalb dieses Monats ermittelt und zur Gesamtanzahl der Besuche hinzugefügt.
Anschließend wird der Zeitstempel des letzten Besuchs in einer Variablen
$lastvisit
gespeichert und die Anzahl der Besuche insgesamt in $totalvisits
.
Code
Anmerkungen
TotalUnique
ist die Anzahl der "gesehenen" Zugriffe unterschiedlicher Besucher.
Besuche von Robots und Suchmaschinen (Google & Co.) zähen hier nicht dazu!
Wenn auch diese Besuche mitgezählt werden sollen, einfach
TotalUnique
durch TotalVisits
ersetzen.
Da nach TotalUnique keine Informationen mehr aus dem Logfile gelesen werden, steht im Code nach
$visits=$buffer[1];
ein break;.
Natürlich lassen sich auch aber noch andere Daten aus den Files lesen - wer dies tut, muss break; eben nach dem letzten Schlüsselwort aufrufen...
Der Zeitstempel
$lastvisit
im Format YYYYMMDDHHNNSS (z.B. 20140325000755) kann mit folgendem Code zerlegt werden:
Um dann mit
echo $day.'.'.$month.'.'.$year.' um '.$hour.':'.$minute.':'.sec;
als 25.03.2014 um 00:07:55 ausgegeben zu werden.