- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:flockについて)
flockについての質問
このQ&Aのポイント
- PHPでファイルロックする方法についての質問です。
- flock関数を使用してファイルをロックし、書き込み操作を行っていますが、'w'や'w+'でファイルを開いてしまうと意図しない結果が生じることについて確認したいです。
- 具体的には、ファイルを開く前にロックを表すディレクトリを作成し、書き込み後にディレクトリを削除するなど、独自の仕組みを構築する必要があると思っています。具体的なソースコードについて教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ファイルをクリアするような処理は ・他のプロセスが追記したあとで、クリアして書き込んだ。 ・クリアしたあとで他から追記されたが、無視して書き込んだ。 いずれにしても「ロックの意味がない」というよりはロック云々以前の設計の問題だと思います。open→lockのような細かいタイミングの話ではないです。 どうしても・・となると別ファイルをロック制御に使ったりします(いわゆるコントロールファイル)。mkdirも書かないわけではありませんが、誤って「残ってしまった」ときがちょっと怖いです。 while (!mkdir("./lockdir")) { usleep(50); } : : rmdir("./lockdir");
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
回答No.2
No.1に追記です Loop内でカウンタをカウントアップするか、Loop突入からの経過時間をチェックして、一定限度以上の「待ち」になったらエラーで戻す・・という処理は入れておきたいですね。