#author("2017-09-13T00:12:36+09:00","","")
#author("2017-09-13T00:13:16+09:00;2017-09-13T00:12:36+09:00","","")
* do_searchで閲覧認証ではじかれた際の無駄な処理をなくす [#ha2e0fcf]

- ページ: [[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};

修正パッチ
  		// 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では閲覧権限のないファイルの中身は見ないようにしました commit:a3190c9e66 -- [[umorigu]] &new{2017-09-12 (火) 02:15:13};
- 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

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

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

SourceForge