do_searchで閲覧認証ではじかれた際の無駄な処理をなくす

  • ページ: BugTrack
  • 投稿者: ぃぉぃぉ?
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2007-11-29 (木) 01:24:16
  • バージョン: 1.4.7
  • リリース予定バージョン: 1.5.2

メッセージ

検索機能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を追加することで無駄な処理を省ける。閲覧認証をかけたページが多い場合には、検索速度が大幅に向上することが期待できる。


修正パッチ

 		// 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 2017-09-10 (日) 01:42:09
    • ....と、書きましたが、readable or notによって処理が変わっているので、元々ここの処理は壊れていました。BugTrack/2432として登録しました -- umorigu 2017-09-12 (火) 23:57:52
  • links_update()は専用のページ名検索メソッド(links_do_search_page)を使うようにしました。do_searchでは閲覧権限のないファイルの中身は見ないようにしました -- umorigu 2017-09-12 (火) 02:15:13
  • 修正の訂正です。links_update()の修正はBugTrack/2432で行い、こちらのBugTrackでは提案の、不要な処理の削除のみ行いました commit:d17082884c -- umorigu 2017-09-13 (水) 00:12:36


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

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.30-0+deb8u1. HTML convert time: 0.276 sec.

OSDN