[英]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.