kostenloser Webspace werbefrei: lima-city


Besucherstatistik mit PHP ohne Datenbanken

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    voloya

    voloya hat kostenlosen Webspace.

    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 :biggrin:. , aber das Herauslesen..:confused:


    mfg :wave:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Zunächst habe ich dir mal ein kleines Script geschrieben:
    <?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;
    		}
    	}
    ?>
    Ich bitte, die Unsauberkeiten zu entschuldigen, denn es ist wirklich spät und ich bin müde.

    Wenn du die Datei dann mit dem Code
    <?php
    	// configuration
    	$counterFile = 'counterFile.txt';
    	// end of configuration
    	
    	$allLines = file($counterFile);
    	
    	// Tabellenkopf
    	foreach($allLines as $line)
    	{
    		// aktuelle Tabellenzeile ausgeben
    	}
    	// Tabellenende
    ?>
    ausgibst, kannst du eine Tabelle zeigen. Bei jedem Schleifendurchlauf ist $line ein neuer Datensatz, ganz so, als würdest du mit einer Datenbanktabelle arbeiten.
  5. 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.
  6. 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



  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    tauli schrieb:
    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 die Zähler-Datei vom Programm bearbeitet wird, wird sie zuerst ausgelesen. Danach neu geöffnet und mit erhöhtem Wert wieder Beschrieben.
    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.
  8. 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 ;)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!