#author("2016-11-26T08:50:05+09:00","","")
#author("2016-11-26T11:43:38+09:00","","")
* なぜページ数が増えると AutoLink は動作しないのか [#pa3df9af]

- ページ: [[BugTrack2]]
- 投稿者: [[bee]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2016-11-26 (土) 08:50:05
- バージョン: 

** メッセージ [#m7dc0e21]
ページ数が増えたとき、AutoLink が原因で正常に動作しなくなると言われている(関連: [[BugTrack2/81]])。

しかし、AutoLink の何が原因なのかコメントを追っていってもよく分からなかった。

- PCRE の問題?
-- サブパターン数の限界?
- メモリ使用量の問題?
- CPU 時間の問題?

原因はさておき、効率の良い正規表現を生成するライブラリとして Regexp-Assemble が知られている。~
PukiWiki でも henoheno さんが generate_trie_regex() という関数を作成している(1.5 には未マージ)。

- [[開発日記/2009-04-19]]
-- [[BugTrack/502]]
-- [[BugTrack2/311]]

しかし、何が原因なのか分からなければベンチマークも取れなければ改善したか(悪化したか)確認するのも難しい。~
そこで AutoLink が動作しない条件を調べたい。もとい詳しい人がいたら教えてほしい、という Bug です。
しかし、何が原因なのか分からなければベンチマークも取れないし、改善したか(もしくは悪化したか)確認するのも難しい。~
そこで AutoLink が動作しない条件を調べたい。~
もとい「詳しい人がいたら教えてほしい」という Bug です。
--------
- ニコニコ大百科のタイトルを食わせてみたところ~
 "preg_match(): Compilation failed: regular expression is too large at offset 3339719"
という WARNING を吐いてくれました。 -- [[bee]] &new{2016-11-26 (土) 10:54:37};
- www.pcre.org/pcre.txt によると 64K data units を越えてはいけないらしい。 -- [[bee]] &new{2016-11-26 (土) 11:09:41};
- blog-tmtsts.rhcloud.com/135 の方法を試したところ、32765 Byte で私の環境も WARNING が出ました。 -- [[bee]] &new{2016-11-26 (土) 11:11:33};
-- pcre.backtrack_limit/pcre.recursion_limit の設定を一桁ずつ増やしてみたが当然ながら効果なし。 -- [[bee]] &new{2016-11-26 (土) 11:19:18};
- bit.ly/2fitPfD で~
 pukiwikiベースのwikiだと日本語名のページは900ページ前後(略)でホワイトアウトして文字が見えなくなる表示上のバグがある
と言われていたのが不思議だったのですが、日本語が 3 バイトでページ名が平均 12 文字程度とすると 900 ページで 32KB を使い切りますね。なるほど。 -- [[bee]] &new{2016-11-26 (土) 11:38:20};
- まあとりあえず preg_replace_callback の戻り値をチェックするようにしたほうがいいですね。ページが真っ白になるのは NULL を素通りさせているせいだと思われるので…。 -- [[bee]] &new{2016-11-26 (土) 11:43:38};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.217 sec.

OSDN