Hallo Leute!
Ich habe da mal eine einfache Frage zu Countern. Das Prinzip eines einfachen Counters ist klar, leider steht mir für die Umsetzung keine Datenbank zur Verfügung, dass muss also Filebased laufen. Hier mal ein kleines Beispiel, wie das später mal aussehen soll:
<?php
// (1): Die Datei mit den Daten wir
// geoeffnet, ausgelesen und vorerst wieder
// geschlossen.
$filename = "counter.data";
$datafile = @fopen($filename , "r");
if ($datafile <=0)
{
echo "Datenfile nicht gefunden oder kaputt!";
exit;
}
else
{
$content = fgets($datafile, "12");
fclose($datafile);
}
// (2): Die ausgelesene Zahl wird um 1 er-
// hoeht und ausgegeben.
++$content;
echo $content;
// (3): Die Datei wird abermals geöffnet
// und die Daten mit den neuen überschrieben
$datafile = @fopen($filename , "w");
flock($datafile, "2");
fputs($datafile, $content );
flock($datafile, "3");
fclose($datafile);
?>
Diesen Auszug habe ich aus einem Script - Archiv. Gleich dazu wird die Warnung genannt, der Counter würde nur bei Seiten bis zu Besucherzahlen von 2000 Besuchern/Tag vernünftig laufen?! Kann mir einer sagen wieso?! Was kann denn schlimmsten Falls passieren?!
Die Gefahr würde doch darin liegen, dass wenn das Counterscript von 2 Besuchern gleichzeitig aufgerufen wird, einer der beiden nicht mitgezählt wird, oder? Die Counterdatei selbst ist doch während des Schreibens mit Flock gesichert und kann daher nicht zerstört werden oder falsche Werte annehmen (in Form von Nullen zu viel o.ä.)?!
Danke für eure Hilfen und Erfahrungen!
Mfg,
Jan Stanetzki!
Ich habe da mal eine einfache Frage zu Countern. Das Prinzip eines einfachen Counters ist klar, leider steht mir für die Umsetzung keine Datenbank zur Verfügung, dass muss also Filebased laufen. Hier mal ein kleines Beispiel, wie das später mal aussehen soll:
<?php
// (1): Die Datei mit den Daten wir
// geoeffnet, ausgelesen und vorerst wieder
// geschlossen.
$filename = "counter.data";
$datafile = @fopen($filename , "r");
if ($datafile <=0)
{
echo "Datenfile nicht gefunden oder kaputt!";
exit;
}
else
{
$content = fgets($datafile, "12");
fclose($datafile);
}
// (2): Die ausgelesene Zahl wird um 1 er-
// hoeht und ausgegeben.
++$content;
echo $content;
// (3): Die Datei wird abermals geöffnet
// und die Daten mit den neuen überschrieben
$datafile = @fopen($filename , "w");
flock($datafile, "2");
fputs($datafile, $content );
flock($datafile, "3");
fclose($datafile);
?>
Diesen Auszug habe ich aus einem Script - Archiv. Gleich dazu wird die Warnung genannt, der Counter würde nur bei Seiten bis zu Besucherzahlen von 2000 Besuchern/Tag vernünftig laufen?! Kann mir einer sagen wieso?! Was kann denn schlimmsten Falls passieren?!
Die Gefahr würde doch darin liegen, dass wenn das Counterscript von 2 Besuchern gleichzeitig aufgerufen wird, einer der beiden nicht mitgezählt wird, oder? Die Counterdatei selbst ist doch während des Schreibens mit Flock gesichert und kann daher nicht zerstört werden oder falsche Werte annehmen (in Form von Nullen zu viel o.ä.)?!
Danke für eure Hilfen und Erfahrungen!
Mfg,
Jan Stanetzki!
Kommentar