**[[続・質問箱/267]] [#o49885df]
#author("2018-03-11T13:50:26+09:00;2004-08-21T01:00:29+09:00","","")
**[[質問箱/2267]] [#o49885df]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|Fatal Error: Maximum execution time (スケーラビリティ問題)|
|~バージョン|1.4.2|
|~投稿者|[[khirano]]|
|~状態|完了|
|~投稿日|&new{2004-07-25 (SUN) 08:35:13};|
***質問 [#c640d8b7]
PHP4.1.2

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

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

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

***回答 [#lac62a16]

-- [[cvs:func.php?annotate=1.54]]
-[[henoheno]] &new{2004-07-25 (SUN) 09:53:24};
~こんにちは、r1_4_2 の func.php の annotate の 48行目 (上記)を見る限り、これは is_page 関数の $is_page という配列をサーチしているうちに時間制限が来たというエラーみたいですね。この関数は、表示するページやMenuBarなどに含まれているページの数だけ呼ばれ、この配列はその度に項目を増やす可能性があるため、参照しているページが多ければ多いほどサーチの負担が大きくなります。そのような負担を減らすのが一つの手です。もう一つは、関数 is_page を書き換えることです。まだリリースされていませんが、実はis_page配列自体が不要であることがわかったため、[[CVS版]]では関数自体がシンプルな形に修正されています。以下を参考にして下さい。
-- [[cvs:func.php.diff?r1=1.62&r2=1.63]]
-[[khirano]] &new{2004-07-25 (SUN) 13:20:12};
~r1_4_2 の func.php を手で 1.62 から 1.63 のように書きかえ、こうして作った新しい func.php と現在使用している func.php を置き換えても大丈夫でしょうか。
-[[khirano]] &new{2004-07-25 (SUN) 13:33:51};
~func.php の書きかえ、置き換え、やってみました。大成功。ありがとうございました。
-[[henoheno]] &new{2004-07-25 (SUN) 15:16:55};
~うまく行って良かった :) 他には、rerated_link などのオプションを残らずoffにして、全体の負担を極力減らすくらいかな、と思っていました。

------------------------------
-[[khirano]] &new{2004-07-25 (SUN) 23:09:44};
~もう1つ、ここに追加で質問させてください。
-[[khirano]] &new{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]] &new{2004-07-25 (SUN) 23:13:17};
~実は私のpukiwikiサイトにはページが5000以上あります。これが原因なのでしょうか。
-[[khirano]] &new{2004-07-25 (SUN) 23:22:29};
~恥ずかしいのですが、私のpukiwikiサイトに[[こんなページ:http://www.transwift.net/pukiwiki/?aynu-procedure]]があります。
-[[khirano]] &new{2004-07-25 (SUN) 23:25:19};
~そして[[このようなページ:http://www.transwift.net/pukiwiki/?3001]]を作るために、[[このようなプラグイン:http://www.transwift.net/pukiwiki/?aynu-script]]を書いていただき、実行しました。

- [[cvs:file.php?annotate=1.37]]
-[[henoheno]] &new{2004-07-26 (MON) 20:42:16};
~類似の問題ですね。ところで、今現在で5373ページもあるというのは、すごいですね :D
-[[henoheno]] &new{2004-07-26 (MON) 20:52:39};
~サラっとしか拝見していませんが、テキスト処理の道具としてWikiを使う、というのも意欲的ですね :)
-[[henoheno]] &new{2004-07-26 (MON) 21:13:34};
~基本的にはスケーラビリティの問題であると思います。ところで該当のエラーの箇所をご覧下さい(上記URL)。落ちている所はstaticな配列をサーチしている部分で、前回のものととても良く似ています。
-[[henoheno]] &new{2004-07-26 (MON) 21:14:28};
~PukiWiki側にも改良の余地がありそうではあるのですが、この関数については、$show_passage の設定をオフにすることで、そもそも回避できるはずです。この他にも、$list_index などの重たくなりそうな設定も一度オフにしてお試し下さい。
-[[khirano]] &new{2004-07-29 (THU) 01:26:17};
~$show_passage, $list_index をオフにしました。[一覧]クリックで表示できました。ありがとうございました。
-[[henoheno]] &new{2004-08-01 (SUN) 23:38:12};
~こちらの問題も、同様に $pg_passage 配列自体が不要(冗長なキャッシング)でした。([[dev:開発日記/2004-08-01]])

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

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

OSDN