fetus Diary

2008/03/28(金) - MO_DEBUG

「画像を出力するプログラムにアクセスすると稀に画像が出ない」という問題があって調査していたのだけど、どうも、MO_DEBUG = TRUE な状態で大量にアクセスしたことが原因らしい。

MO_DEBUG が TRUE の場合、webapp/config/*.ini を毎回 PHP スクリプトにコンパイルしなおす。その時、上書きとかするんじゃなくて普通に消してから作り直すから、プロセス A が消す→プロセス B が消す→プロセス A が作る→プロセス B が作る、みたいな流れになる可能性が。プロセス A, B が作るコンパイルされた ini ファイルは同じもののはず(タイムスタンプ入るから微妙に違うけど)だから上書きしても問題ないとして、問題は、A が消した後に B が消そうとすると、unlink 関数が「そんなファイルねぇよボケ」というのよね。Mojavi のプログラムいじって "@" つけてエラーの抑制をすればよいかというとそういうわけでもなくて、今度は、A が消した後に B が require するとファイルが見つからないという問題になると思われる。

# で、警告が入るとバイナリデータにごみが混じるのでブラウザは壊れていると認識する

結局、MO_DEBUG を FALSE にするしかなさげ。

# まあ、本番運用では FALSE だし、そういうことがあるというのを認識してさえ居れば大丈夫かしらね。

で、解決してからググったらPHP Users-ML がヒットした。

コメント

コメントはありません。

名前
メール
コメント

※HTML タグは使えません。HTTP URL には自動リンクが張られます。

Captcha
画像から読み取れる文字を入力: