Thread Kann es sein,daß ein Webserver kein flock() kennt? (17 answers)
Opened by Fatso Keratso at 2006-05-25 17:50

betterworld
 2006-05-27 21:59
#7773 #7773
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Wie viele Web-Server gibt es denn? Wenn es immer derselbe Server ist, auf dem das Script laeuft und Du darauf Dauerprozesse laufen lassen darfst, koenntest Du vielleicht mit Shared Memory oder Semaphoren (gibt es das ueberhaupt auf FreeBSD) arbeiten.

Oder vielleicht gibt es weitere Dateisysteme wie /tmp, in denen Locks moeglich sind? Dabei muss man aber sehr vorsichtig arbeiten, denn in /tmp kann jeder schreiben, und man darf sich z. B. nicht darauf verlassen, dass ein Dateiname wie "/tmp/lockkeratso" nicht von einem anderen Benutzer belegt ist. Am besten sollte man sich in /tmp ein Verzeichnis mit einem zufaelligen Namen und chmod 700 erstellen und im Home-Verzeichnis einen Symlink darauf anlegen. Wenn in man dieses Verzeichnis dann mit chdir wechselt und mit stat('.') noch mal schnell ueberprueft, ob es immer noch die richtigen UID/Masks hat und mit Cwd ueberprueft, ob man auch wirklich dadrin ist oder ob es ein Symlink auf ein anderes Verzeichnis war, sollte man darin ziemlich sicher Lockfiles anlegen koennen.
Dann muss man nur noch ueberlegen, ob /tmp bei einem Neustart oder nach einem gewissen Zeitraum automatisch geloescht wird und was man dann macht.\n\n

<!--EDIT|betterworld|1148753509-->

View full thread Kann es sein,daß ein Webserver kein flock() kennt?