flock の扱いに問題がある†
- ページ: BugTrack2
- 投稿者: yamamo
- 優先順位: 普通
- 状態: 却下
- カテゴリー: 本体バグ
- 投稿日: 2008-05-13 (火) 03:50:06
- バージョン:
メッセージ†
- fclose 前にアンロックしている
- fclose($fp) の前に flock($fp, LOCK_UN) していますが、これは不要であり、かつ問題があります。fclose によってロックも解除されるので、通常は明示的にアンロックする必要はありません。また、fclose によってバッファがフラッシュされる前にロックを解除した場合、別プロセスが不完全な状態のファイルを読み込んでしまう可能性があります。
- flock が失敗する環境への対応
- flock 失敗時に die するコードと、何もしないコードが混在しています。NFS など flock が動作しない環境もあるため、flock 後の 'or die...' を全て取り払ってしまうか、設定ファイルで無視させることもできるようにした方がよいと思います。(flock 以外の手段によるロックを選択できるようになればベストですが...)
- (余談) NFS で使っている環境というのもあまり珍しくはないと思うのですが、みなさんどうしているんでしょうかね..? NFS 越しでロックできない場合でも、環境によって flock がちゃんと FALSE を返す場合と、ロックできてもないのに TRUE を返してしまう場合があるようです。
Last-modified: 2011-01-19 (水) 23:24:40