fclose()の関数リファレンスには変更履歴は何もありません。
http://www.php.net/manual/ja/function.fclose.php
ところがflock()の変更履歴にこんなことが書いてあります。
http://www.php.net/manual/ja/function.flock.php
> 5.3.2
> ファイルのリソースハンドルを閉じたときにロックを自動的に解放する機能が削除されました。
> ロックの解放は、常に手動で行わなければなりません。
つまり、
なんでこの機能削除したんでしょう?
けっこう重大な問題になりそうなところがありそうな気がするんですが。
削除したはいいんですがfclose()の更新履歴にも書いてほしいですね。
まあ、よく見たらNotesに書いてありますけどね。
http://www.php.net/manual/ja/function.fclose.php
ところがflock()の変更履歴にこんなことが書いてあります。
http://www.php.net/manual/ja/function.flock.php
> 5.3.2
> ファイルのリソースハンドルを閉じたときにロックを自動的に解放する機能が削除されました。
> ロックの解放は、常に手動で行わなければなりません。
つまり、
$fp = fopen('hoge.txt','a'); while(flock($fp, LOCK_EX)===false){ sleep(1); } fwrite($fp, 'hoge'); fclose($fp); //時間のかかる処理 sleep(100); print('おわり');この書き方はPHP5.3.2になった途端に破綻するということです。
なんでこの機能削除したんでしょう?
けっこう重大な問題になりそうなところがありそうな気がするんですが。
削除したはいいんですがfclose()の更新履歴にも書いてほしいですね。
まあ、よく見たらNotesに書いてありますけどね。
PR
トラックバック
トラックバックURL: