Besucherstatistik mit PHP ohne Datenbanken
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
aufwand
ausgeben
besucher
code
date
datei
datenbank
datum
erstellen
file
http
raten
sperre
statistik
tabelle
tag
textdatei
url
zeigen
-
Hallo :wave*
Ich würde gerne eine anonyme tag/besucher">Besucherstatistik erstellen, wo also nur Seitenaufrufe gezählt werden, die sich aber mit steigender Besucherzahl im Mittel auch verändern werden. Außerdem soll das Script ohne Datenbank auskommen.
Selbstverständlich habe ich auch schon einen Plan:
Es wird eine Textdatei angelegt, die das Datum speichert und wie viele Seitenaufrufe an diesem Tag verzeichnet wurden. Sobald der nächste Tag erreicht wird, wird ein neuer Tag an den Dateibeginn geschoben und dann wieder die Aufrufe gezählt.
Die Statistikseite öffnet dann diese eine Datei und gibt Datum + Seitenaufrufe absteigend in einer Tabelle wieder.
Kurzum meine Frage ist:
Wie kann ich denn dann diese Textdatei in PHP in einer Tabelle sozusagen als Statistik ausgeben lassen?
Das Speichern der Werte in die Textdatei würde ich vielleicht gerade noch selbst hinbekommen . , aber das Herauslesen..
mfg
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
habe mal kurz gegoogled und folgendes Tutorial gefunden (gibt sicherlich noch viele andere!)...
http://www.html.de/tutorials/32570-php-besucherzaehler-mit-cookie-sperre-und-ohne-mysql.html
In dem Tutorial steht ausdrücklich "Der Counter ist nicht dafür geeignet ihn den Besuchern zu zeigen. Er kann dem Webmaster nützliche Statistiken bieten."
Es sollte aber genug Denkanstoß geben, um gegebenenfalls aus den gesammelten Daten auch eine Anzeige auf der Homepage für den Besucher zu erstellen. -
Zunächst habe ich dir mal ein kleines Script geschrieben:
Ich bitte, die Unsauberkeiten zu entschuldigen, denn es ist wirklich spät und ich bin müde.<?php // configuration $counterFile = 'counterFile.txt'; // end of configuration $allLines = file($counterFile); if(count($allLines) == 0) { file_put_contents($counterFile, date('Y-n-j').' 0'."\n"); } else { $latestEntry = explode(' ', $allLines[count($allLines)-1]); $tmpCurrentEntryDate = $latestEntry[0]; while($tmpCurrentEntryDate != date('Y-n-j')) { $tmpCurrentEntryDateArray = explode('-', $tmpCurrentEntryDate); $tmpCurrentEntryTimestamp = mktime(1, 0, 0, $tmpCurrentEntryDateArray[1], $tmpCurrentEntryDateArray[2] + 1, $tmpCurrentEntryDateArray[0]); $tmpCurrentEntryDate = date('Y-n-j', $tmpCurrentEntryTimestamp); file_put_contents($counterFile, $tmpCurrentEntryDate.' 0'."\n", FILE_APPEND); } } $allLines = file($counterFile); $latestEntry = explode(' ', $allLines[count($allLines)-1]); $allLines[count($allLines)-1] = $latestEntry[0].' '.($latestEntry[1] + 1); $fileWritingFlag = 0; foreach($allLines as $line) { file_put_contents($counterFile, $line, $fileWritingFlag); if($fileWritingFlag == 0) { $fileWritingFlag = FILE_APPEND; } } ?>
Wenn du die Datei dann mit dem Code
ausgibst, kannst du eine Tabelle zeigen. Bei jedem Schleifendurchlauf ist $line ein neuer Datensatz, ganz so, als würdest du mit einer Datenbanktabelle arbeiten.<?php // configuration $counterFile = 'counterFile.txt'; // end of configuration $allLines = file($counterFile); // Tabellenkopf foreach($allLines as $line) { // aktuelle Tabellenzeile ausgeben } // Tabellenende ?>
-
Es gibt auch fertige Counter, kuck doch mal auf [ur=http://trendcounter.coml]www.trendcounter.com[/url].100% kostenlos und richtig gut.
Wenn es aber wirklich darum geht, dass du ihn selber erstellst, solltest du den Post von drafed-map ansehen. -
Hallo
Problem bei Zugangs-Statistik ohne Datenbank (Datei-Basiert)
ist, dass das Dateisystem NICHT Multi-Thread fähig ist (oder wie das heisst ?!)
also bei Zeit-gleichem Zugriff von zwei (oder mehr) Usern versagt das Dateisystem
weil eine Datei nicht "zur gleichen Zeit" mit zwei verschiedenen Datensätzen beschrieben werden kann
ich hatte auch mal einen Counter der Datei-Basiert war, und der hat nicht funktioniert,
fast täglich sind alle Einträge (Zeilen) in der log-Datei verloren gegangen, war einfach alles weg
bei Datenbank (mysql) klappt das besser, dort können auch "zeitgleiche" EInträge geschrieben werden
den genauen technischen Hintergrund kenne ich auch nicht,
aber ich rate in jedem Fall mit Datenbank (mysql) zu arbeiten
... ist ja auch nicht (viel) mehr aufwand ... gibt ja genug tutorials für sowas
-
tauli schrieb:
Wenn die Zähler-Datei vom Programm bearbeitet wird, wird sie zuerst ausgelesen. Danach neu geöffnet und mit erhöhtem Wert wieder Beschrieben.
den genauen technischen Hintergrund kenne ich auch nicht,
aber ich rate in jedem Fall mit Datenbank (mysql) zu arbeiten
... ist ja auch nicht (viel) mehr aufwand ... gibt ja genug tutorials für sowas
Wenn parallel dazu ein zweiter Zähler-Prozess läuft wird er womöglich noch den alten Wert lesen und deshalb auch einen Falschen Wert in die Datei schreiben. Das würde mal den Zählwert verfälschen.
Beim "in die Datei schreiben" tritt ein Betriebssystemmechanismus in Kraft:
Es gibt eine Sperre die Verhindert dass eine Datei mehrmals gleichzeitig zum Schreiben geöffnet werden kann. Diese Sperre dürfte dafür verantwortlich sein, dass die Datei zerstört wird. -
Keine Datenbank? PHP? Naja, das schreit mir ja kräftig nach Google Analytics! Du solltest dir das mal anschauen: http://www.google.com/intl/de/analytics/. Ach ja, ich verstehe unter Besucherstatistik mehr als nur so nen öden Web-Counter ;)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage