Sven Rautenberg: Frage zum Sperren von Dateien

Beitrag lesen

Moin!

Hallo!

Wie sollte dies auch möglich sein - sämtliche zugreifenden Benutzer verwenden doch dasselbe serverseitige Skript, und wenn dort einmal flock(LOCK_EX) verwendet wurde, kann ein solche Situation doch gar nicht eintreten - oder täusche ich mich?

Sie verwenden zwar dasselbe Script aber unterschiedliche Instanzen davon.

Dieser Hinweis ist nicht zielführend.

PHP verwendet kooperatives (bzw. 'advisory' - hinweisendes) Locking. Sprich: Wenn alle mitmachen, funktioniert's. Wenn jemand aus der Reihe tanzt, geht's vermutlich schief.

Wenn es also zwei Skripte gibt, die auf "demo.txt" zugreifen wollen, und das eine Skript nutzt Locking, das andere aber nicht, kann es zwar beliebig viele Instanzen des ersten Skripts geben, die parallel zugreifen _wollen_ - durch das Locking wird das aber verhindert.

Das zweite Skript hingegen, was sich ums Locking nicht schert, weil kein flock() benutzt wurde (warum auch immer, typisch wäre: "vergessen") kann die Datei einfach öffnen und verändern, obwohl das erste Skript Locks gesetzt hat. Und damit mächtig Ärger verursachen.

Und genau so ist der Hinweis im Buch auch geschrieben.

- Sven Rautenberg

--
"Love your nation - respect the others."