Hallo Tom,
Dein Beispiel funktioniert, auch wenn Du eher | statt + verwenden solltest.
Vielleicht verwechselst Du einfach nur die Tatsache, dass Du immer ein sleep(15) in Deinem Code hast damit, dass flock() immer wartet.
Ich habe Dir mal Dein Beispiel etwas angepasst, damit es sleep() nur noch ausführt, wenn das Sperren erfolgreich war:
<?php
if (php_sapi_name () == 'cli') {
define ('NL', "\n");
} else {
define ('NL', "<br />\n");
}
error_reporting (E_ALL);
echo "PHP-Version: " . phpversion () . NL;
$filename = 'dummy.txt';
if (!file_exists ($filename)) {
touch ($filename);
}
$fh = fopen ($filename, 'rb');
$wb = false;
$ok = flock ($fh, LOCK_EX | LOCK_NB, $wb);
echo "Ergebnis des Lockversuchs auf $filename ist " . ($ok ? 'true' : 'false') . NL;
echo "Wouldblock: " . ($wb ? 'true' : 'false') . NL;
if ($ok) {
flush ();
sleep (15);
}
echo NL . 'fertig' . NL;
?>
Viele Grüße,
Christian