検索機能lib/func.phpのdo_searchで、無駄な処理発見。
// 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; }