Frank Schönmann: Was passiert bei flock() und http-Zugriff?

Beitrag lesen

hi!

da ich gerade dabei bin ein nicht DB-gestütztes Forum zu
programmieren und die Dateizugriffe mit flock() abzufangen, frage
ich mich gerade, was passiert eigentlich bei einem exklisiven
Filelock und einem http-Zugriff. Normalerweise würde es der Server
wieder versuchen und sicher auch irgendwie eine "Lücke" abpassen.
Aber angenommen der (eher) hypothetische Fall, der Filelock würde
länger anhalten, was bekomme ich dann? Server-Timeout, 404....

Also wenn du flock() verwendest, das wartet bei einer gelockten Datei
IMHO bis sie wieder frei ist. In dem Fall würde es wohl irgendwann
zu einem Time-Out kommen -- entweder auf seiten des Servers oder des
Clients, weil ja nicht passiert.

Daher verwenden wir hier im Forum zum Locken von Dateien auch kein
flock(), sondern ein eigens dafür entwickeltes Locking-Modul: das
versucht eine betimmte Zeit lang und mehrmals hintereinander eine
Datei zu locken; wenn das nicht klappt, bekommt der Benutzer hier
im Forum irgendwann eine Fehlermeldung, dass er es in ein paar
Minuten noch mal versuchen soll -- ist dir vielleicht auch schon mal
passiert... ;)

Falls es dich interessiert, den Source des hier verwendeten Locking-
Modules findest du im CVS Repository bei Sourceforge:
  http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/selfforum/selfforum-cgi/shared/Lock.pm?rev=1.12&content-type=text/vnd.viewcvs-markup
und das zugehörige Verzeichnis
  http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/selfforum/selfforum-cgi/shared/Lock/

bye, Frank!