dedlfix: Counter terminiert regelmässig

Beitrag lesen

echo $begrüßung;

(Un-)regelmässig setzt sich der counter auf Null zurück. Vielleicht Count.dat gelöscht.

  1. Wie kann ich den Grund dafür rausfinden?

Du könntest ein Error-Logfile führen. Teste vor Zugriff auf die Datei, ob sie vorhanden ist und schreibe eine entsprechende Meldung in eine Datei.

  1. Ist irgendwas in meinem Code dafür prädestiniert?

Ja, es gibt mindestens eine Schwachstelle

$data = file("count.dat");

Wenn bei file() ein Fehler auftritt, wird kein Array sondern false zurückgeliefert. Diesen Sonderfall berücksichtigst du nicht. Vermutlich tritt dieser Fall auf, wenn die Datei gerade mit flock() gesperrt ist.

$text = $data[0];

false hat kein Element 0. Die entsprechende Notice wirst du sicherlich ignorieren, weil das die Default-Einstellung für das error_reporting ist. Hier hilft nur, Fehler, die im unbeaufsichtigtem Betrieb auftreten zu loggen. Dazu könnte man error_reporting auf E_ALL, display_errors auf 0, log_errors auf 1 und error_log auf einen Dateinamen setzen. Diese Datei sollte man dann regelmäßig kontrollieren.

$text = $text + 1;

Hier schlägt dann die automatische Typumwandlung von PHP zu. $data[0] hat NULL ergeben, das wird, weil damit gerechnet werden soll, in 0 umgewandelt und dann dein 1 addiert. ($x = $x + 1; kann man übrigens auch als $x++; schreiben.)

echo "$verabschiedung $name";