PHP Zähler Problem

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Xelos
Mitglied
Beiträge: 19
Registriert: 01.07.2004 15:18

Beitrag 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
Benutzeravatar
DaniM
Mitglied
Beiträge: 687
Registriert: 28.04.2003 19:22
Wohnort: Ulm
Kontaktdaten:

Beitrag 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
Ihr wohnt im Süd-Westen Deutschlands?
|- Nehmt an der Schwäbischen phpBB Usergroup teil!
dannyjansen
Mitglied
Beiträge: 129
Registriert: 18.11.2003 18:15
Wohnort: Schnaitsee
Kontaktdaten:

Beitrag 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
Benutzeravatar
DaniM
Mitglied
Beiträge: 687
Registriert: 28.04.2003 19:22
Wohnort: Ulm
Kontaktdaten:

Beitrag 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
Ihr wohnt im Süd-Westen Deutschlands?
|- Nehmt an der Schwäbischen phpBB Usergroup teil!
Elo
Mitglied
Beiträge: 318
Registriert: 04.11.2002 17:44

Beitrag 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";
Antworten

Zurück zu „Coding & Technik“