Achim: Eigenbaucounter

Beitrag lesen

Hallo!

Ich bin dabei, mich in PHP einzuarbeiten und hab mal einen kleinen Zähler gebastelt...

Dabei habe ich mich an einem Counterscript orientiert, das ich gefunden habe. Allerdings habe ich die Reloadsperre rausgemacht. Der Zählerstand wird in eine Datei counter.txt geschrieben, die anfangs nur das Zeichen 0 (null) enthält. Bei jedem Zugriff wird die Datei geöffnet, der Wert um 1 erhöht und dann wieder geschrieben. Anschließend wird das ganze grafisch ausgegeben.

Bei einem Testlauf mit mehreren Leuten war der Zählerstand auf einmal von über 500 auf einen zweistelligen Wert zurückgefallen. Kann das damit zusammenhängen, dass zwei Anfragen exakt gleichzeitig kamen? Und wenn ja, wie könnte man das verhindern?

Hier mal das Script:
<?php
header("Content-type: image/gif");
$back = imagecreatefromgif("counter.gif");
$posx = 70; /* zum Festlegen des Mittelpunktes des Counterstandes */
$posy = 26; /* zum Festlegen des Mittelpunktes des Counterstandes */
$angle = 0; /* Winkel des Counterstandes */
$fontsize = 16; /* Schriftgröße */
$color = -0; /* Schriftfarbe */
$font = "aribl0.ttf"; /* Schriftart */
$zd = fopen("counter.txt", "r");
$zs = fread($zd, filesize("counter.txt"));
fclose($zd);
$zs++;
$zd = fopen("counter.txt", "w");
fwrite($zd, $zs);
fclose($zd);
$box = imagettfbbox($fontsize, $angle, $font, $zs);
$posx2 = $posx - floor((abs($box[0]) + abs($box[2]) + abs($box[4]) + abs($box[6])) / 4);
$posy2 = $posy + floor((abs($box[1]) + abs($box[3]) + abs($box[5]) + abs($box[7])) / 4);
imagettftext($back, $fontsize, $angle, $posx2, $posy2, $color, $font, $zs);
imagegif($back);
imagedestroy($back);
?>

Danke für Eure Hilfe.

Achim