Joachim: flock - gleichzeitiger Dateizugriff

Beitrag lesen

Hi,

Mit file_exists kannst Du schon mal gar nichts anfangen, da es mit NAMEN und nicht mit einem HANDLE (als Rückgabewert) arbeitet.

das scheidet ja auch nach der Lektuere des andere Threads eh aus...

Selbstverständlich kann man flock() selber in einer Schleife aufrufen.

Du hattest doch geschrieben:
flock() liefert in der Default-Einstellung erst false, wenn das Script-Timeour erreicht ist.
Daraus hatte ich entnommen, das ein

while (counter < max) {
    if (flock($fp,2)) {
       ...
       flock($fp,3)
       return true;
    }
    counter ++
    usleep (300);
}

eigentlich nix bringt.

Der denkbar schlechteste Weg wird aber das automatische Warten auf ein erteiltes Lock sein (also ohne LOCK_NB). Das blockiert eine Apache-Instanz[*] und lässt den User sinnlos auf eine Fehlanzeige warten.

Das ist mein aktuelles Schema:

$lock = fopen($lockfile, "w")
if (flock ($lock, 2)) {

fp = fopen($file, "w")
    fwrite ($fp, $text);
    fclose ($fp);

flock ($lock, 3);
    fclose ($lock);

return true;
}
else return error;

Wuerdest Du also fuers Locken des Lockfiles doch mit einer Schleife  und dann mit LOCK_NB arbeiten?

Gruesse, Gruesse, Joachim

--
Am Ende wird alles gut.