このコードを 2 回実行する:
$fp = @fopen('test.test', "wb");
if (flock($fp, LOCK_NB | LOCK_EX)){
@fwrite($fp, $data);
echo 'written';
sleep(5);
}else{
echo 'skipped , ok';
}
@flock($fp, LOCK_UN);
@fclose($fp);
常に「書かれた」という出力が得られます
がスキップされたことを意味し、LOCK_NB
手がかりがあれば (winbdows と unix の両方で)
編集 (2012-03-29 まだ修正されていません): https://bugs.php.net/bug.php?id=54453&edit=3 PHP バグ #54453