質問箱/2267

カテゴリ
サマリFatal Error: Maximum execution time (スケーラビリティ問題)
バージョン1.4.2
投稿者khirano?
状態完了
投稿日2004-07-25 (SUN) 08:35:13

質問

PHP4.1.2

以下のエラーについて教えてください。

書き込みをしようとすると、次のエラーがでます。 しかし、後で再ブラウズすると書き込んだものが表示されます。つまり、書き込まれています。

*Fatal error*: Maximum execution time of 30 seconds exceeded in
*/var/www/html-transwift.net/pukiwiki/func.php* on line *48 

回答

  • henoheno 2004-07-25 (SUN) 09:53:24

    こんにちは、r1_4_2 の func.php の annotate の 48行目 (上記)を見る限り、これは is_page 関数の $is_page という配列をサーチしているうちに時間制限が来たというエラーみたいですね。この関数は、表示するページやMenuBarなどに含まれているページの数だけ呼ばれ、この配列はその度に項目を増やす可能性があるため、参照しているページが多ければ多いほどサーチの負担が大きくなります。そのような負担を減らすのが一つの手です。もう一つは、関数 is_page を書き換えることです。まだリリースされていませんが、実はis_page配列自体が不要であることがわかったため、CVS版では関数自体がシンプルな形に修正されています。以下を参考にして下さい。

  • khirano? 2004-07-25 (SUN) 13:20:12

    r1_4_2 の func.php を手で 1.62 から 1.63 のように書きかえ、こうして作った新しい func.php と現在使用している func.php を置き換えても大丈夫でしょうか。

  • khirano? 2004-07-25 (SUN) 13:33:51

    func.php の書きかえ、置き換え、やってみました。大成功。ありがとうございました。

  • henoheno 2004-07-25 (SUN) 15:16:55

    うまく行って良かった :) 他には、rerated_link などのオプションを残らずoffにして、全体の負担を極力減らすくらいかな、と思っていました。


  • khirano? 2004-07-25 (SUN) 23:09:44

    もう1つ、ここに追加で質問させてください。

  • khirano? 2004-07-25 (SUN) 23:11:04

    Wikiメニューの「一覧」をクリックすると、次のエラーがでます。Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/html-transwift.net/pukiwiki/file.php on line 239

  • khirano? 2004-07-25 (SUN) 23:13:17

    実は私のpukiwikiサイトにはページが5000以上あります。これが原因なのでしょうか。

  • khirano? 2004-07-25 (SUN) 23:22:29

    恥ずかしいのですが、私のpukiwikiサイトにこんなページがあります。

  • khirano? 2004-07-25 (SUN) 23:25:19

    そしてこのようなページを作るために、このようなプラグインを書いていただき、実行しました。

  • cvs:file.php?annotate=1.37
  • henoheno 2004-07-26 (MON) 20:42:16

    類似の問題ですね。ところで、今現在で5373ページもあるというのは、すごいですね :D

  • henoheno 2004-07-26 (MON) 20:52:39

    サラっとしか拝見していませんが、テキスト処理の道具としてWikiを使う、というのも意欲的ですね :)

  • henoheno 2004-07-26 (MON) 21:13:34

    基本的にはスケーラビリティの問題であると思います。ところで該当のエラーの箇所をご覧下さい(上記URL)。落ちている所はstaticな配列をサーチしている部分で、前回のものととても良く似ています。

  • henoheno 2004-07-26 (MON) 21:14:28

    PukiWiki側にも改良の余地がありそうではあるのですが、この関数については、$show_passage の設定をオフにすることで、そもそも回避できるはずです。この他にも、$list_index などの重たくなりそうな設定も一度オフにしてお試し下さい。

  • khirano? 2004-07-29 (THU) 01:26:17

    $show_passage, $list_index をオフにしました。[一覧]クリックで表示できました。ありがとうございました。

  • henoheno 2004-08-01 (SUN) 23:38:12

    こちらの問題も、同様に $pg_passage 配列自体が不要(冗長なキャッシング)でした。(dev:開発日記/2004-08-01)



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

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

OSDN