flock の扱いに問題がある

メッセージ

  1. fclose 前にアンロックしている
    • fclose($fp) の前に flock($fp, LOCK_UN) していますが、これは不要であり、かつ問題があります。fclose によってロックも解除されるので、通常は明示的にアンロックする必要はありません。また、fclose によってバッファがフラッシュされる前にロックを解除した場合、別プロセスが不完全な状態のファイルを読み込んでしまう可能性があります。
  2. flock が失敗する環境への対応
    • flock 失敗時に die するコードと、何もしないコードが混在しています。NFS など flock が動作しない環境もあるため、flock 後の 'or die...' を全て取り払ってしまうか、設定ファイルで無視させることもできるようにした方がよいと思います。(flock 以外の手段によるロックを選択できるようになればベストですが...)
    • (余談) NFS で使っている環境というのもあまり珍しくはないと思うのですが、みなさんどうしているんでしょうかね..? NFS 越しでロックできない場合でも、環境によって flock がちゃんと FALSE を返す場合と、ロックできてもないのに TRUE を返してしまう場合があるようです。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-19 (水) 23:24:40
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u8. HTML convert time: 0.264 sec.

OSDN