Hi,
Bei meinem Skript besteht die Möglichkeit/Gefahr, daß mehrere User dieses Skript gleichzeitig aufrufen. Dabei werden Werte gelesen und geschrieben.
Nun besteht ja die Möglichkeit, daß ein User die Datei in beschlag hat und gerade in diese Datei schreibt, und gleichzeitig ein anderer User diese Datei aber lesen möchte.
Was passiert in diesem Fall.
die zweite Instanz liest leere Daten, während die erste gerade speichert, und speichert dieselben später ab. Die Daten gehen also verloren.
Ich habe versucht eine deutsche Beschreibung für den Befehl lock und unlock zu finden, leider ohne Erfolg. Soviel ich im englischen verstanden habe handelt
es sich bei diesem Befehl um eine mögliche Lösung. Die Frage ist dann natürlich auch, ist dieser Befehl überhaupt wichtig oder bedarf es überhaupt einer besonderen Behandlung.
Du meinst vermutlich flock? Die Beschreibung dazu findest Du bei der bei Perl mitgelieferten Doku. Unter Windows in der HTML-Doku perlfunc, unter Unix schneller mit
perldoc -f flock
Ich habe die Sache übrigens sehr umständlich gelöst (weil ich flock selber nicht richtig verstehe *g*), indem ich vor jedem Schreibzugriff eine Dummy-Datei anlege, die sozusagen als Markierung dient. Vor jedem Lesezugriff prüfe ich in einer while-Schleife, ob diese Datei existiert. Vorsicht, es kann zu einer Endlosschleife führen, deshalb prüfe nur z.B. 10 mal und warte dazwischen mit select(undef,undef,undef,0.1) eine Zehntelsekunde (z.B.).
Cheatah