ページ数が増えるとAutoLinkが原因でmake_link()が正常に動作しない

メッセージ (from nao-pon)

ページ数が増えると、AutoLink の正規表現が原因で、make_link()が正常に動作しなくなり、空白を返します。

結果的にページが正常に表示されなくなります。

ページ数は5400ページほど、autolink.datのサイズが 38KB ほどで、この問題が出ています。

原因は解りませんが、正規表現パターンが大きすぎるのが原因かもしれません。

PHP: パターン構文 - Manual(http://www.php.net/manual/ja/reference.pcre.pattern.syntax.php)の以下の記述は関係あるのかな?

再帰的パターン
一つのパターン中に 15 以上のキャプチャ用サブパターンを用いると、PCRE は 再帰を行っている間のデータ保存用に追加の記憶領域を確保する必要が あります。
記憶領域が確保できない場合、メモリ不足エラーを再帰の内側から 出力する手段がないため、最初の 15 個のキャプチャ用サブパターンに ついてのみデータが保存されます。

テスト環境

OS
Vine Linux 3.1
Apache
1.3.33
PHP
4.3.11
PukiWiki
1.4.5_1

メッセージ (from asari, BugTrack2/105)

データベース的な使い方をしようと思い、スクリプトを使ってページを 10000 件ほど追加したところ、 デフォルト表示の部分とプラグインの部分をのぞいてページが表示されない状態になりました。

cache/autolink.dat を削除するとページ編集時に一時的に見えるようになったので、 autolink 周りが怪しいと思いました。
関連しそうな pukiwiki.ini.php の設定項目は:

$autolink = 8;

ちなみに、 cache/autolink.dat のサイズは、 45KB 程度です。

$autolink = 0;

とすると、正常に表示されるようになりました。

CVS版 (ただし、 iconv で UTF-8 に変換済み) でも修正されていないことを確認しました。 BugTrack2/44 と重複しているかとも思ったのですが、違うかもです。 -- asari 2005-09-07 (水) 04:44:47

テスト環境

OS
Mac OS X "Tiger" 10.4.2
Apache
2.0.54
PHP
5.0.4
PukiWiki
CVS 2005-09-07 (水) 04:44:47

コメント

AutoLink の正規表現を分割して処理する例 (from nao-pon)

コメント


コメント



*1 既存のWikiを全部コピーしたテスト環境なら、好きにやれるから問題ない?

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-16 (木) 19:53:15
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.365 sec.

SourceForge