2014-03-05 13:43:19 (水)
PHPのマニュアルを久しぶりに、眺めていたら
flockが、5.3.2で
ファイルのリソースハンドルを閉じたときにロックを自動的に解放する機能が削除されました。 ロックの解放は、常に手動で行わなければなりません。
と、記述されていた。
そして、サンプルでは
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // 排他ロックを確保します
ftruncate($fp, 0); // ファイルを切り詰めます
fwrite($fp, "ここで何かを書きます\n");
fflush($fp); // 出力をフラッシュしてからロックを解放します
flock($fp, LOCK_UN); // ロックを解放します
} else {
echo "ファイルを取得できません!";
}
fclose($fp);
となっているが、上記のような一般的なファイル処理では関係ない様だ。
http://www.kklib.com/blog/flock.php.txt
を、実行すると
flock1 rc = 0
lock2 error 1
lock2 error2 1
lock5 success @@ 0
lock4 success @@ 0
lock3 success @@ 0
lock1 success @@ 0
となった。