Tom: PHP flock() mit race condition gelöst?

Beitrag lesen

Hello CK,

Bei PHP wirst Du den 'or'-Zweig nicht mehr zu sehen bekommen.
flock() liefert in der Default-Einstellung erst false, wenn das
Script-Timeour erreicht ist.

Es gibt so viele Gruende, warum ein flock() fehlschlagen kann, das kannst du
gar nicht ueberblicken.

Welche könnten das denn mit der Einstellung BLOCKING (ist Default) sein?
Da fiele mir eigentlich nur ein ungültiges Handle ein.

Aber wenn es als gültiges Handle besorgt worden ist, und man es dann für flock() verwendet, wird es benutzt, auch wenn es die Datei inzwischen nicht mehr gibt. Ob das nun so intelligent ist, weiß ich nicht.
So ist aber mWn das Verhalten von PHP.

Was mich nur sehr ärgert, ist die schlechte Harmonisierung von flock() und den dio-Funktionen. Wenn eine Datei mandatory locked ist, und man versucht dann ein flock(LOCK_NB), dann hängt das flock trotzdem bis zum Timeout oder ggf. bis zur Freigabe durch die dio-Funktion. Das sollte von den PHPlern korrigiert werden und nicht als "Feature" abgetan werden!

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau