计算巨大的TXT文件中字符串的条目



我有一个 7 GB 的巨大文件.txt格式,我正在使用这个线程处理 在 PHP 中读取非常大的文件。

.txt文件的示例:

cat
dog
dog
mouse
cat
bird
dog
cat
...

现在,我需要将此文件组织成如下内容:

[cat] -> 3
[dog] -> 3
[mouse] -> 1
[bird] -> 1

请指导在哪里搜索以解决此问题。 感谢您的时间和建议。

这是一个非常基本的例子。它读取文本文件,一次一行,并计算相同的行数。

<?php
$fn = fopen("my_very_large_file.txt","r");
$wordCounter = [];
while(!feof($fn)) {
    $word = fgets($fn);
    if (isset($wordCounter[$word])) {
        $wordCounter[$word]++;
    }
    else {
        $wordCounter[$word] = 1;
    }
}
fclose($fn);
echo "<pre>";
print_r($wordCounter);
echo "</pre>";

这将非常缓慢。但是,如果您只需要使用一次代码,这不是真正的问题。如果你更频繁地需要它,你需要找到一种方法来加快它。

你可以试试array_count_values

因此,您必须将.txt转换为数组。主要的问题是我不知道文件大小是否会导致问题......

要将文件转换为数组,您可以使用explode() .

如果每次执行脚本时都需要此文件,则可以将所需的结果存储到数据库中。因此,您可以简单地获取所需的数据,而无需执行所有文件。

玩得开心:)

最新更新