Moin!
Nun stellen sich mir aber folgende Fragen:
- Besteht die Sperre noch, wenn ich den Dateizeiger beendet habe (sonst wäre die Funktion ja sinnlos)?
Ja, deine Funktion ist sinnlos. Mit fclose() wird die Dateisperre wieder freigegeben.
- Wird am Ende des Scriptes, wenn ich die Sperre nicht entferne, trotzdem die Sperre aufgehoben?
Am Skriptende werden alle offenen Dateien geschlossen, was ebenfalls alle Sperren aufhebt.
- Wie finde ich heraus, ob die Sperre tatsächlich gesetzt wurde?
Wenn flock() ausgeführt wurde, ist die Sperre gesetzt, sofern du blockierendes Locking benutzt. Wenn du LOCK_NB als Option mit einbindest, kehrt flock() immer sofort zurück, liefert aber den Erfolg des Lock-Setzens als boolsches Funktionsergebnis zurück.
- An welchem Maßstab mache ich fest, wie lange vor erneutem Öffne-/Sperrversuch gewartet werden soll?
Beim blockierenden Setzen eines Locks wartet die Funktion so lange, bis das geforderte Lock gesetzt werden konnte. Insofern ist überhaupt kein Warten notwendig.
Da deine Funktion aber alle Locks sofort durch Dateischließen wieder verliert, kriegst du ja sowieso keine vernünftige Funktion hin.
Lies mal den Artikel zum Thema "Dateisperren". Der erklärt die alle Probleme, die dabei so auftreten können, und wie man sie korrekt behebt.
- Sven Rautenberg