ページの文字数が多いと、キャッシュ書き込みエラーとなる†
- ページ: BugTrack2
- 投稿者: Kjm
- 優先順位: 普通
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-05-22 (火) 11:13:01
- バージョン: 1.4.7_notb_utf8
メッセージ†
再現環境1†
- OS:Windows XP Home SP2
- Apache:2.2.3(Win32)
- PHP:5.1.6
- 1.4.7_notb_utf8
再現環境2†
- OS:FreeBSD 6.1-RELEASE-p14 i386
- Apache:1.3.37 (Unix)
- PHP:4.4.6 CGI
- 1.4.7_notb_utf8
- 関連? BugTrack/84 -- teanan
- OS:FreeBSD 6.1-RELEASE-p14 i386、Apache:1.3.37 (Unix) 、PHP:4.4.6 CGIでも再現性あり。 再現データは、次のエディット画面よりコピペ。 http://ja.wikipedia.org/w/index.php?title=%E6%85%B0%E5%AE%89%E5%A9%A6&action=edit -- Kjm
- キャッシュファイル名が長すぎる現象が発生し、BugTrack/84 と類似する現象になっていると思われるので、エラーメッセージを正確に修正。 -- Kjm
- Microsoft-IIS 6.0*2 + PHP 5.1.2では再現しませんでした。 -- g@kko
- g@kkoさんへ、euc版だと再現しない可能性が高いように感じます。 euc版、utf8版どちらでしょうか? -- Kjm
- 上の再現環境に、「1.4.7_notb_utf8」と書いてあると思いますけど。 --
- すいません。正確性を欠いていましたね。
手元に上記報告の環境がないので,確認後に報告します。間違いなく1.4.7_notb_utf8でした。ただし、データは再現データを利用していません。*3*4
また,手元の環境(WindowsXP + Apache 2.2.4 + PHP 5.2.1 + PukiWiki UTF-8版)では,BracketName*5に非常に長い文字列を指定すると再現します。
上記のError messageのcache/~.refをdecode*6すれば
財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定
となり、再現データ内の
[[財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定]]
が元で、BugTrack/84と同じ現象になっていると思います。
で,当該のBracketNameを外したところ
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1104 bytes) in lib/make_link.php on line 586
が出ました。orz すいません。時間の都合,本日の報告はここまでで。 -- g@kko
- g@kkoさんのご指摘のとおり、再現環境1&2にて、BracketNameを短くしたところ、再現しなくなりましたので、BugTrack/84 と同様の現象と判明しました。ただし、上記の 『~lib/make_link.php on line 586』現象は再現しないので、Microsoft-IIS 6.0固有の可能性があります。 -- Kjm
- BugTrack/84と同じということで、こちらは「完了」にします。 --
- 了解しました。BugTrack/84と同じということでお騒がせしました。 g@kkoさんの現象は、必要でしたら新しいBugTrackページに移動していただくのが良さそうです。 -- Kjm
- 私のは特に問題ありません。通常運用環境で出ているエラーではありませんので。。。
エラー自体は,php.iniで設定したメモリ容量を超えた場合に発生するようです。*7単純にmemory_limitを大きくすれば回避できるみたいですが,根本解決ではないっすね。 -- g@kko
- お疲れ様です。ページ内容の量を減らしても治まるのでしょうか? ページ名の長さとメモリ消費量に、N乗の比例関係があったりしたら興味深いのですが。 -- henoheno
- データはこれをそのまま貼り付け。(上記のとおりキャッシュの書込みエラーが出る)
- ページを編集し,
[[財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定]]
を
__財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定__
に修正して保存
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in lib/html.php on line 334
が発生する。。。って。。。エラーの出ている箇所が違う。。。orz
lib/html.php on line 334は,preg_replaceですね。
- もう一度ページ編集を行い何も変更せずに保存
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1104 bytes) in lib/make_link.php on line 586
が出ました。-- g@kko
- ページの容量を450行(156,833バイト)まで減らしたら出なくなりました。*8と,いうことで,「ページ内容の量を減らしても治まる」と思われます。「ページ名の長さ」については,当方は「test1」とか「test2」でテストを行っています。「ページ名の長さ」との関係については,現時点で検証できていません。 -- g@kko
- お疲れ様です。CPU時間やメモリを使いすぎた後に、PHPに強制的に実行を止められる場所(行)は普通変動しますから、変動する事自体はあまり気になさらないで下さい。 -- henoheno
- メモリを使いすぎる症状について、(1)ページ名を段階的に短くしても治まるし、 (2)ページ内容を段階的に減らしても治まる のであれば、どちらの要素もメモリ食いである可能性があります。ただし(2)は今までの経験則*9から自明です。(1)があるとしたら興味深いですね。 -- henoheno
hogehogeは長い文字列です
2003 server
記事の内容が内容だけに会社のテスト環境では別の168,404 バイトのデータを使用しました。
上記の再現データでも[と]を別の文字(_とか)に置き換えるとエラーは出ません。
作成していないページ名
hex2bin
ページサイズが大きかったからでしょうか。。。
500行(168,534バイト)では発生しています。限界点の調査はできていません。
とか、現状のbackupの作りなど
Last-modified: 2007-06-08 (金) 23:13:10