Я думаю,
$wordlist=array_flip(array_unique(array_filter(file('small.txt', FILE_IGNORE_NEW_LINES))));
, который вы на самом деле используете в своем коде, замедляет его. Может быть, лучше составить список слов один раз и возиться с самим собой:
if($file1 = fopen('big.txt', 'r')){
if($file = fopen('small.txt', 'r')){
while(!feof($file)){
$line=trim(fgets($file));
if(!isset($wordlist[$line])&&!ctype_space($line)&&!empty($line)){
$wordlist[$line]=0;
}
}
fclose($file);
}
while(!feof($file1)){
$line1 = trim(fgets($file1));
if(isset($wordlist[$line1]))
$wordlist[$line1]++;
}
fclose($file1);
}
На этом шагепеременная $ wordlist содержит список всех строк в вашем файле small.txt и количество вхождений каждой строки в вашем файле big.txt.Вы можете использовать этот массив или отфильтровать его, чтобы удалить пустые строки. Вы также можете отсортировать массив с помощью uasort, чтобы узнать больше о том, какие строки встречаются чаще, а какие - меньше, и вы даже можете пойти дальше в своем анализе ...