你好 Andreas,
Es funktioniert -- auf Unix-Systemen. Auf Windows haengt es von der
PHP-Version ab.
laut PHP-Doku auch vom Dateisystem, wovon z.B. auch WIN98 betroffen ist.
Ja, richtig, das hatte ich vergessen.
Dir ist klar, dass die Datei nur zur Laufzeit gesperrt ist? Ist das
Script beendet, ist auch der Lock aufgehoben.
ich habe deshalb in die Testdatei ein sleep() eingebaut. Ob das nun zur
Laufzeit zählt, weiß ich nicht.
Jepp, tut es.
Aber was nützt mir das Ganze, wenn ich es nicht testen kann?
Einige Sachen kann man halt nicht oder nur schwer testen :) Was meinst du,
warum manche schweren Bugs erst hier im Forum auftreten?
"race conditions" ist, wenn ich richtig nachschlage, der Vorgang,
daß Prozess B die Daten von Prozess A überschreibt. Auch das wird vor
dem Schreiben der Datei nochmal überprüft. Kommt mir sehr
unwahrscheinlich vor. Der Prozess darf nur schreiben, wenn er nach
allen Datenänderungen immer noch im Besitz der aktuellen lock-ID ist.
Eine “Race Condition” tritt z. B. dann auf, wenn der Lock-Vorgang nicht
atomar ist. Also z. B. dann, wenn ich mit Lock-Dateien arbeite: Prozess A
prueft, ob die Datei vorhanden ist. Sie ist noch nicht vorhanden und
deshalb geraet A in den kritischen Bereich, wird dann aber vom Scheduler
schlafen gelegt um mit Prozess B fortzufahren. Prozess B prueft dann auch,
ob eine Lock-Datei vorhanden ist und geraet auch in den kritischen Bereich.
Beide legen eine Lock-Datei an (auch eine nicht-atomare Operation). Wer
hat nun den Lock?
War nur ein simples Beispiel, gibt auch viel kompliziertere Systeme, in
denen das auftreten kann.
Ich wuerde mir das ueberlegen.
Im Moment lieber nicht. [...]
_Mir_ fliegt es ja nicht um die Ohren :)
[...]
Ich habe mich mehrmals nach dem Thema hier erkundigt und bin nicht zu
zufriedenstellenden Ergebnissen gekommen.
Hab ich nicht gesehen, ehrlich gesagt.
Ich bitte auch zu bedenken, daß das Projekt in meinem Forum immer
zur Diskussion stand und die Beteilligung der Devs etwa 0 war.
Tut mir leid, aber davon habe ich nichts mitbekommen -- ich habe zwar
ein- oder zweimal eine Mail von dir bekommen, auf eine habe ich nicht
geantwortet weil ich da gerade voll im Stress war, aber das wars dann
eigentlich auch.
再见,
CK
--
Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
http://wwwtech.de/