Tom: Dateien -> gleichzeitiges lesen/schreiben verhindern

Beitrag lesen

Hello,

Du hast ja LOCK_NB schon entdeckt. Das bedeutet also, dass die Lock-Funktion das Locking versucht und wenn sie nicht erfolgreich war, einen Fehler zurückgibt. Du gerätst also nicht ins Timeout des Scriptes.

Wenn man das Locking auf diese Weise durchführt, sollte man es in eine Schleife packen und nach einem erfolglosen Lockversuch 5ms warten. Fünf Versuche dürften reichen, da die Funktion auf LowLevelEbene selber nochmals fünf Versuche in sehr kurzen Abständen vornimmt. Damit es keine Deadlocks gibt, kann man die Wartezeit auch mit jedem Zyklus etwas zufällig verändern. Aber das ist dann schon höhere Mathematik.

Das Öffnen der Datei sollte man jedenfalls nondestructive vornehmen, also mit dem Modus "r+" oder wenn man sich sein kann, dass die Datei vorhanden ist, mit "a+".

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen