file.phpエラー (flockの取り扱い)†
- ページ: BugTrack
- 投稿者: XAN
- 優先順位: 普通
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2002-11-11 (月) 22:57:01
- バージョン: 1.3.2
メッセージ†
ページを新規作成or編集を行い、保存しようとすると、file.phpの38行目がエラーになってしまいます。
- 保存先ディレクトリのパーミッションエラーでは? -- reimy 2002-11-11 (月) 23:47:20
- 初期設置ファイルのユーザーがWWWでないから、というのもありそう(ユーザ変更するかもしくは666に変更するか) -- たらこせる 2002-11-12 (火) 00:20:33
- Windows9x系とかNFS使った環境でもエラーになると思います -- 長月あきと 2003-01-31 (金) 17:42:41
- flock()はNFSでは動かない、とマニュアルにも書いてありますね。どうしたものか… -- ぱんだ 2003-01-31 (金) 18:34:43
- while(!flock())で無限ループを作る必要がありますか?ロックできなかったらロックしない、というのもひとつの手かなと。 -- ぱんだ -- 2003-01-31 (金) 18:38:22
- flock()でロックが出来なければrename()でロックするのも手かもしれません。 -- 長月あきと 2003-02-01 (土) 19:46:25
- 私の場合Windows98で動かすときはそれで逃げてます。 -- 長月あきと 2003-02-01 (土) 19:47:48
- でも実装するならmkdir()の方が簡単ですね。 -- 長月あきと 2003-02-03 (月) 14:39:36
- 昔、flockを自端末で色々とテストしていたんですけど、ロックがエラーとなる局面には、お会いすることができずにいました。ですので、flockが機能する環境なのに、エラーとなるケースって、すごい状況なんですよね?なので、自分が作成しているものは、みんな @flock で全部無視モードにしました。でも、それでも排他したいのなら、.lck ファイルを作成するなどして、原始的に逃げるしか無いでしょうね。 -- upk2003-02-23 (日) 16:46:02
- flockをgrepしてみたんですが、file.phpのput_lastmodifiedでflock($fp,LOCK_EX)をした後、もう一度flock($fp,LOCK_EX)しています。typoかな。 -- 2003-02-23 (日) 17:19:41
- BugTrack/198で修正済みですね。 -- 長月あきと 2003-02-24 (月) 03:59:18
- ぐは、確かに。失礼しました。 -- 2003-02-24 (月) 22:48:09
- きちんとやろうとすると、mkdirやrenameしたまま異常終了するケースを想定して前回ロックを掛けたのが~秒前ならロックを自動解放するとかの処理が必要かな。http://www.din.or.jp/~ohzaki/perl.htm#File_Lock あたりが参考になるかも -- 2003-02-23 (日) 17:20:36
- 最終的な落しどころはどうしたらよいでしょう?1.4ではwhileの無限ループを外してますから1.3もそれでいいんじゃないかなと個人的には思いますが。 -- 長月あきと 2003-02-26 (水) 17:08:09
- 関連: BugTrack2/306 --