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:
  1. Lese jede *.txt Datei ein und extrahiere aus dem Dateinamen den Monat und das Jahr
  2. Untersuche die Datei zeilenweise
  3. 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
  4. 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

PHP-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:
PHP-Code:
Um dann mit
echo $day.'.'.$month.'.'.$year.' um '.$hour.':'.$minute.':'.sec;
als 25.03.2014 um 00:07:55 ausgegeben zu werden.