Hello,
es gibt (gab?) noch so einen alten Fehler.
Da haben mich die PHP-Leute mal ziemlich abgekanzelt, als ich ihnen das (sogar auf ihren Wunsch) wunderbar aufbereitet habe...
Zusammenspiel der dio_* Funktionen und flock().
Sind ja im Prinzip zwei verschiedene Schuhe, aber für ein Dateisystem!
Wenn man mit
$lock_ok = flock(filename,LOCK_EX + LOCK_NB)
eine Dateisperre anfordert, dann rauscht das Script am Statement mit Rückmeldung false vorbei, wenn bereits eine Dateisperre eines anderen Prozesses über flock() besteht. das ist OK so, erwartet man ja auch.
Wenn man dieselbe Datei nun aber mit einer dio_Funktion öffnet und sperrt, dann wartet das Script trotz LOCK_NB solange, bis die DIO-Sperre wieder freigegeben wurde. das würde ich jetzt nicht so erwarten.
Das kann man nur ausprobieren, wenn man Linux-Volume entsprechend für DIO gemounted hat.
Es ist ein schwerer Design-Fehler.
Es würde mich interessieren, ob das in der neuesten 5er-Version nun endlich funktioniert.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
