Stefan Muenz: PERL und Threadnumber (WWWBOARD.PL) ?

Beitrag lesen

Hallo Klaus,

Ich verstehe das so, dass er sich am Anfang die
Nummer holt und erst später die neu angepasste
zurückschreibt. Zwischenzeitlich ist die Datei
DATA.TXT geschlossen (?!).
Meines Erachtens kann das nur dann gutgehen,
wenn gewährleistet wäre, dass jeweils nur eine
Instanz des Programms laufen könnte.

Wenn Du mal etwas zurueckgehst in den juengeren Archivdateien hier, wirst Du auf Threads stossen, in denen Leute "es nicht glauben koennen" oder "wahnsinnig werden" <g>, weil irgendwas mit Messagenummern und File-Zuordnung nicht stimmte. Vermutlich ist da genau der Fall eingetreten, dass zwei Leute zeitlich so dicht einen neuen Script-Prozess angestossen haben, dass die Datei vom einen Prozess mittlerweile aktualisiert wurde, bevor sie vom anderen erneut geoeffnet wurde.
Aus der Welt schaffen koennte man das durch Einsatz der Perl-Funktion flock(), die es erlaubt, geoeffnete Dateien vor dem Zugriff anderer Prozesse zu schuetzen. Das wuerde allerdings in dem jetztigen Zustand des Scripts bedeuten, dass der zweite Prozess die Datei mit dem Zaehlerstand eben nicht oeffnen kann und deshalb stirbt. Da schaut er dann auch dumm, der User <g>. Man muesste das Script also so umschreiben, dass es - falls die Datei mit dem Zaehlerstand aufgrund einer flock-Sperre nicht geoeffnet werden kann, den open-Befehl in einer Schleife mit gewissen Timeouts so oft wiederholt, bis er erfolgreich ist (= bis der andere Prozess mit einem entsprechenden flock-Aufruf die Zaehlerstanddatei wieder freigegeben hat).

Wenn das jetzt aber sofort wieder zum Thema "Idee fuer's Forum" wird, werde ich wahnsinnig und kann's nicht glauben <g>.

viele Gruesse
  Stefan Muenz