- 追加された行はこの色です。
- 削除された行はこの色です。
* do_serchで閲覧認証ではじかれた際の無駄な処理をなくす [#ha2e0fcf]
#author("2017-09-13T00:13:16+09:00;2017-09-13T00:12:36+09:00","","")
* do_searchで閲覧認証ではじかれた際の無駄な処理をなくす [#ha2e0fcf]
- ページ: [[BugTrack2]]
- ページ: [[BugTrack]]
- 投稿者: [[ぃぉぃぉ]]
- 優先順位: 低
- 状態: 着手
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-11-29 (木) 01:24:16
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.2
** メッセージ [#c0887aa0]
検索機能lib/func.phpのdo_searchで、無駄な処理発見。
-L. 239あたりから。一行追加するだけで対策できる。
// Search auth for page contents
if ($search_auth && ! check_readable($page, false, false)) {
unset($pages[$page]);
--$count;
}
+ else
// Search for page contents
foreach ($keys as $key) {
$b_match = preg_match($key, get_source($page, TRUE, TRUE));
if ($b_type xor $b_match) break; // OR
}
if ($b_match) continue;
認証チェックでunreadableだったときに、unsetで検索にヒットしなかった扱いをしているが、それに関係なくページの中身を確認している。elseを追加することで無駄な処理を省ける。閲覧認証をかけたページが多い場合には、検索速度が大幅に向上することが期待できる。
--------
- これも[[PukiWiki/1.4/ちょっと便利に/任意のページごとの閲覧・編集制限/未対応プラグインを暫定的に保護するための認証実装方法案]]実装時に発見。 -- [[ぃぉぃぉ]] &new{2007-11-29 (木) 01:25:20};
- これも[[PukiWiki/1.4/ちょっと便利に/任意のページごとの閲覧・編集制限/未対応プラグイン対策]]実装時に発見。 -- [[ぃぉぃぉ]] &new{2007-11-29 (木) 01:25:20};
修正パッチ
// Search auth for page contents
if ($search_auth && ! check_readable($page, false, false)) {
unset($pages[$page]);
--$count;
+ continue;
}
- メモです。do_searchはlinks_update (lib/links.php) からも使われていて、単純に更新者のreadable or notで分岐すると壊れてしまうことがわかりました。が、これはlinks_update側を直すべきですね [[BugTrack/2080]] -- [[umorigu]] &new{2017-09-10 (日) 01:42:09};
-- ....と、書きましたが、readable or notによって処理が変わっているので、元々ここの処理は壊れていました。[[BugTrack/2432]]として登録しました -- [[umorigu]] &new{2017-09-12 (火) 23:57:52};
- links_update()は専用のページ名検索メソッド(links_do_search_page)を使うようにしました。do_searchでは閲覧権限のないファイルの中身は見ないようにしました -- [[umorigu]] &new{2017-09-12 (火) 02:15:13};
- 修正の訂正です。links_update()の修正は[[BugTrack/2432]]で行い、こちらのBugTrackでは提案の、不要な処理の削除のみ行いました commit:d17082884c -- [[umorigu]] &new{2017-09-13 (水) 00:12:36};
//#comment
#comment