Seite 2 von 2

Verfasst: 07.09.2004 18:50
von Xelos
Für mich spielt es im Prinzip keine Rolle ob Datei oder Datenbank.
Dantenbank wäre sicherlich von der Verarbeitung etwas schneller. Da ich aber php newbie bin, fällt mir die Dateiverarbeitung noch leichter.

Den Zähler setze ich ab und an auch wieder auf 0.

@Danny, wie hast du es denn gelöst, dass die Datei nicht doppelt geschrieben werden kann?

Auf Webseiten, die wenig besucht sind, funktioniert der von mir oben gepostete Zähler. Es geht nur um meine Hauptseite, die bis zu 10000 Seitenaufrufe/Tag hat. Hier kommt es leider vor, dass 2 User Gleichzeitig auf den Zähler zugreifen. Passiert dies, so wird nichts in die Zählerdatei gespeichert.
Die Chance, dass 2 User zur exact selben Zeit auf den Zähler zugreifen ist zwar gering, aber es passiert.

Gruß
Xelos

Verfasst: 07.09.2004 18:55
von DaniM
Wie meinst du das? Es besteht ein Eintrag in der Datenbank und zwar die Anzahl der Seitenaufrufe.
Kommt ein User auf deine Seite, so wird dieser Wert ausgelesen, um einen Zähler erhöht und anschließend per UPDATE in die Datenbank gespeichert.
Damit verhindert wird, dass nochmal beim nächsten Seitenaufruf +1 gerechnet wird, wird ein Cookie gesetzt. Dieses bleibt 24 Stunden bestehen, so dass wenn er am nächsten Tag kommt, wieder als "Besucher" gezählt wird.

Mit freundlichen Grüßen,
Dani

Verfasst: 07.09.2004 19:35
von dannyjansen
Die Cookie abfrage ist vorher. Dadurch wird es nicht erhöht. Die Cookie abfrage ist länger! Nicht 24h!


@Xelos: Ich weiß nicht wie ich das gelöst habe, ich weiß nur das es funktioniert!

Wer den Zähler braucht, soll mir sagen wie und was für funktionen er braucht.

Danny

Verfasst: 07.09.2004 19:38
von DaniM
dannyjansen hat geschrieben:Die Cookie abfrage ist vorher. Dadurch wird es nicht erhöht. Die Cookie abfrage ist länger! Nicht 24h!


@Xelos: Ich weiß nicht wie ich das gelöst habe, ich weiß nur das es funktioniert!

Wer den Zähler braucht, soll mir sagen wie und was für funktionen er braucht.

Danny
Ja aber man kann einen Besucher schon wieder dazuzählen wenn er nach einem Tag wieder kommt ;-). Sonst hätte so manche Homepage einige hunderte weniger

Mit freundlichen Grüßen,
Dani

Verfasst: 07.09.2004 19:40
von Elo
Nö, Cookies werden von mir nur in äusserst seltenen Fällen zugelassen.

Code: Alles auswählen

$counter_file = '/tmp/counter.txt';
clearstatcache();
ignore_user_abort(true);
if (file_exists($counter_file)) {
   $fh = fopen($counter_file, 'r+');
   while(1) {
     if (flock($fh, LOCK_EX)) {
         #$buffer = chop(fgets($fh, 2));
         $buffer = chop(fread($fh, filesize($counter_file)));
         $buffer++;
         rewind($fh);
         fwrite($fh, $buffer);
         fflush($fh);
         ftruncate($fh, ftell($fh));   
         flock($fh, LOCK_UN);
         break;
     }
   }
}
else {
   $fh = fopen($counter_file, 'w+');
   fwrite($fh, "1");
   $buffer="1";
}
fclose($fh);

print "Count is $buffer";