Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
Log-Textdatei als Statistik benutzen
Autor: SaschaPall
Datum: 17.06.2010 23:54:35
Hallo!
nach längerer Zeit hänge ich wieder einmal an einem Problem.
Jede Seite meiner Homepage, die man aufruft, schreibt in eine Log-Textdatei einige Daten wie Datum, Uhrzeit, IP-Adresse und Browser...
Ein solcher Eintrag sieht dann ungefähr so aus:
17.06.2010 - 20:29:08 || http://127.0.0.1 || index.php || Chrome || Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/http://5.0.375.70 Safari/533.4
(Links sind da keine drinnen, die hat anscheinend selfhtml gemacht...)
Jedoch fände ich es interessant, ob es eine Möglichkeit gibt, eine Statistik darüber zu erstellen. Das heißt eine PHP-Datei, die diese Datei Zeile für Zeile ausließt, per while-Schleife jede Zeile in ein Array speichert, und dann Statistiken erstellen kann....
Mir wäre wichtig, dass man folgende Punkte sehen könnte:
1) Welche Seiten an einem Tag (bzw innerhalb eines bestimmen (dynamischen?) Intervalls) besucht wurden.
2) Welcher Besucher welche Seiten angesehen hat.
3) Welcher Browser am häufigsten pro selbst ausgewähltem Intervall (Tage, Wochen, Monate, immer) verwendet werden.
Ich hoffe, dass das machbar ist... ^^
Was mich auch noch interessieren würde, ob man per getenv("HTTP_USER_AGENT"); und entsprechender Abfragen eine genauere Browser-Erkennung machen kann. Im Moment kann ich nur zwischen IE, Mozilla, Safari, Chrome und Opera unterscheiden. Kann man die Versionsnummer auch irgendwie rausfiltern?
MfG
Sascha
Re: Log-Textdatei als Statistik benutzen
Autor: T.Jung
Datum: 18.06.2010 23:22:40
> Jede Seite meiner Homepage, die man aufruft,
> schreibt in eine Log-Textdatei einige Daten wie
> Datum, Uhrzeit, IP-Adresse und Browser...
> Ein solcher Eintrag sieht dann ungefähr so aus:
> 17.06.2010 - 20:29:08 || http://127.0.0.1 || index.php
> || Chrome || Mozilla/5.0 (Windows; U; Windows NT
> 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko)
> Chrome/http://5.0.375.70 Safari/533.4
Das enthält doch die gleichen Infos wie die Standard-Apache-Logfiles.
Hast Du dadrauf keinen Zugriff bei Deinem Hoster?
> Jedoch fände ich es interessant, ob es eine
> Möglichkeit gibt, eine Statistik darüber zu
> erstellen.
Klar gibt es die.
Genau das macht nämlich Webalizer mit den o.g. Standardlogs.
http://www.webalizer.org/
(Das ist kein PHP-Script, sondern nur ein Beispiel, das so etwas geht...)
> Das heißt eine PHP-Datei, die diese
> Datei Zeile für Zeile ausließt, per
> while-Schleife jede Zeile in ein Array speichert,
> und dann Statistiken erstellen kann....
> Mir wäre wichtig, dass man folgende Punkte sehen
> könnte:
> 1) Welche Seiten an einem Tag (bzw innerhalb
> eines bestimmen (dynamischen?) Intervalls)
> besucht wurden.
> 2) Welcher Besucher welche Seiten angesehen hat.
> 3) Welcher Browser am häufigsten pro selbst
> ausgewähltem Intervall (Tage, Wochen, Monate,
> immer) verwendet werden.
>
> Ich hoffe, dass das machbar ist... ^^
Sicher, ist alles machbar.
Aber wie genau lautet jetzt Deine Frage?
> Was mich auch noch interessieren würde, ob man
> per getenv("HTTP_USER_AGENT"); und entsprechender
> Abfragen eine genauere Browser-Erkennung machen
> kann. Im Moment kann ich nur zwischen IE,
> Mozilla, Safari, Chrome und Opera unterscheiden.
> Kann man die Versionsnummer auch irgendwie
> rausfiltern?
Ja, siehe
http://techpatterns.com/downloads/php_browser_detection.php
Gruß,
Tobias Jung
Re: Log-Textdatei als Statistik benutzen
Autor: SaschaPall
Datum: 19.06.2010 10:31:27
Hallo!
> Das enthält doch die gleichen Infos wie die
> Standard-Apache-Logfiles.
> Hast Du dadrauf keinen Zugriff bei Deinem
> Hoster?
ich wusste gar nicht, dass der Hoster soetwas auch aufzeichnet! Jedenfalls hab ich keinen Zugriff drauf.
> Aber wie genau lautet jetzt Deine Frage?
Also: ich bin bereits so weit, dass ich diese Log-Datei auslese, und Zeile für Zeile in einem Array speichere.
Mich würde interessieren, wie man dieses Array sortieren/bearbeiten/auslesen/... muss, damit man
1) doppelte Einträge löschen kann,
2) Statistiken pro Tag oder einem anderen Zeitintervall anzeigen kann,
3) die besuchten Seiten einer IP-Adresse = eines Benutzers ansehen kann,
4) einsehen kann, welcher Browser am häufigsten (pro Zeitintervall) benutzt wurde.
Wäre es vielleicht sinnvoller zur besseren Bearbeitung, dass ich die Zeilen anders speichere?
MfG
Sascha
Re: Log-Textdatei als Statistik benutzen
Autor: T.Jung
Datum: 19.06.2010 15:46:10
Ich hab heute nur ganz wenig Zeit, deshalb für den Moment nur das Wichtigste:
> Wäre es vielleicht sinnvoller zur besseren
> Bearbeitung, dass ich die Zeilen anders
> speichere?
Ja - ich würde an Deiner Stelle als erstes ein Script schreiben, welches die Logdatei ausliest und in eine MySQL-Datenbank schreibt bzw. übelegen, ob Du die Logdatei nicht ganz weglässt und _direkt_ in der DB sicherst.
Der Vorteil liegt darin, dass das Auswählen der gewünschten Daten sowie die Sortierung dann einfach leichter fällt.
Falls Du auch keine DB nutzen kannst, wäre es durchaus zu überlegen, in einen Tarif zu wechseln, bei dem eine Datenbank enthalten ist -- meiner Meinung nach würde sich das allein schon für diesen Zweck lohnen.
Wobei auch dann noch genug Rest-Arbeit bleibt -- das nur als Hinweis, damit Du das nicht falsch verstehst und denkst, mit einer DB wäre alles restliche dann ganz einfach...
Gruß,
Tobias Jung
Re: Log-Textdatei als Statistik benutzen
Autor: SaschaPall
Datum: 19.06.2010 19:11:33
Also ich hab mich deshalb nicht für eine DB entschieden, da dadurch meiner Meinung nach 100te Einträge pro Tag erfolgen müssten, was sich erstens in der Größe und zweitens in der Zugriffszeit widerspiegeln würde. Aber ich kenn mich recht wenig mit DBs aus, wenn meine Bedenken falsch sind, dann werde ich das so probieren...
MfG
Sascha
Re: Log-Textdatei als Statistik benutzen
Autor: SaschaPall
Datum: 02.09.2010 21:48:03
Hallo!
Also nach langer Zeit und viel Arbeit haben ich mittlerweile zumindest eine Lösung für den 1. Punkt gebastelt.
$datei = "ip.txt";
$array = file($datei);
$array2 = array_values(array_unique($array));
Damit lösche ich meine doppelten Einträge.
Die anderen 3 Punkte sind mir nicht mehr ganz so wichtig... Ich habe mir ein kleines Formular geschrieben, womit ich die Abfragen eventuell auch für andere Nutzer, die nicht Zugang zum Quelltext haben, möglich mache.
Das Formular besteht Anfangs aus 5 Checkboxen
1) Datum
2) Uhrzeit
3) IP
4) Browser
5) Suchmaschine
Sobald man eine checkbox anklickt, werden weitere Optionen zur Sortierung der Log-Datei angezeigt:
1) Datum
    -) statisch
    -) von - bis
2)Uhrzeit
    -) statisch
    -) von bis
3) IP
    -) _Texteingabefeld_
Bei den Browsern und Suchmaschinen jeweils mehrere Checkboxen mit Auswahlmöglichkeiten...
Mein jetziges Problem ist, dass ich keine formatierte Ausgabe der Log-Datei erzeugen kann, weil ich die If-Abfragen der auswertenden PHP Datei nicht dynamisch gestalten kann. Sollte also bei einem statischen Datum nur der Monat "04" ausgewählt worden sein, und zusätzlich die IP-Adresse http://127.0.0.1, dann soll die Log-Datei nur nach Seitenbesuchen der IP-Adresse http://127.0.0.1 an allen Tagen des Monats April durchforstet und auch ausgegeben werden.
Kann man meine If-Abfragen eventuell irgendwie verknüpfen?
if($Tag == $Tag1) // ===> Hier fixe Tage filterbar!
if($Tag >= $Tag1 && $Tag <= $Tag2) // Hier von - bis Tage filterbar!
if($Monat == $Monat1) // ===> Hier fixe Monate filterbar!
if($teil3[1] >= $Monat1 && $teil3[1] <= $Monat2) // Hier von - bis Monate filterbar!
if($Jahr == $Jahr1) // ===> Hier fixe Jahre filterbar!
if($Jahr >= $Jahr1 && $Jahr <= $Jahr2) // ===> Hier von - bis Jahre filterbar!
if($teil1[0] == $IPFeld) // ===> Hier IP-Adressen filterbar!
(Das ist nur ein Teil meiner möglichen If-Abfragen und soll als Beispiel dienen...)
MfG
Sascha
|