EisFuX: Versuch, flock() zu erläutern ...

Beitrag lesen

Hallo stephan,

kann sein… aber ich werde leider aus der Dokumentation einfach nicht schlau!
was z.B. ist "eine exklusive, nur schreibende Verriegelung"??

Es gibt zwei Arten von File-Locks:

1. SHARED ("geteilt"): Hier können mehrere laufenden Programme gleichzeitig auf eine Datei zugreifen. Logischerweise geht das nur lesend.

2. EXCLUSIVE ("ausschließlich/exklusiv"): Wenn ein Programm in die Datei schreiben will, dann braucht es einen exklusiven Lock. Nur so kann sichergestellt werden, dass ein anderes Programm, was die Datei ausliest, auch konsistente (also zu einem bestimmten Zeitpunkt gültige) Daten bekommt.

Es ist also problemlos möglich, das mehrere PHP-Scripts mit flock($fh, LOCK_SH) auf eine Datei zugreifen. Sobald aber LOCK_EX benutzt wird, darf nur ein Script "gleichzeitig" auf die Datei zugreifen.

oder: "Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE."
was genau ist ein Fehler? auch wenn die Datei bereits gelesen wird??

Fehlerfall heißt hier: Wenn flock() nicht erfolgreich war. Beispielsweise würde ein flock($fh, LOCK_EX) fehlschlagen, wenn die Datei schon von einem anderen Script mit flock() belegt ist. Dann liefert flock() FALSE zurück und dein Script sollte in dem Fall nicht auf die Datei zugreifen. Schreiben würde die Dateiinhalte zerstören, und beim Lesen könnte es fehlerhafte Daten aus der Datei bekommen.

MffG
EisFuX

--
Auch meine Hosenträger sind intelligent, in dem Sinne, dass man sie regulieren kann. Sie besitzen ein adaptives Verhalten.
Stanisław Lem