簡體   English   中英

PHP中的快速黑名單處理器?

[英]Fast blacklist processor in php?

我有一個具有搜索功能的網站,但我想檢查列入黑名單的關鍵字的搜索條件

問題是列表太大了,現在站點加載速度很慢(第一個字節3-5秒)且CPU負載很高。 列表中有45.000行(〜1.5 mb)

我試圖分割成幾個較小的文件,但速度仍然很慢

黑名單功能適用於每次搜索您可以在下面看到它

function CheckForBlockedWords(){

     $blackList=array();
 $string1 = trim(strtolower(str_replace("_"," ",$_GET['search'])));
 $string1 = preg_replace('/-+/', ' ',$string1);
 $string1 = preg_replace('/\s+/', ' ',$string1);
 $string1 = trim($string1);
  foreach (glob("/home/keywords2/*") as $file) {
        $blackList = file($file);

foreach($blackList as $word)
            {

                 $string2 = trim(strtolower(str_replace("_"," ",$word)));
                 $string2 = str_replace("-"," ",$string2);

                 //$string2 = preg_replace('/-+/', ' ',$string2);


                 $string2 = preg_replace('/\s+/', ' ',$string2);


                $string2 = trim($string2);

                if(strpos($string1, $string2) !== false   )
                {
                    echo "<div class='blockedSearch'>What you are searching is blocked!</div>";
                    return true;
                }
            }

 }

        return false;
}

有什么辦法可以更快地做到這一點?

文件系統很慢。 數據庫之所以快是因為它們具有索引並且可以緩存查詢。 因此,您最好設置一個小表,並在該表中進行搜索(如果在該表中列出了用戶鍵入的關鍵字)。 這比從磁盤讀取文件並循環遍歷它們要快得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM