我有一个 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()
.
如果每次执行脚本时都需要此文件,则可以将所需的结果存储到数据库中。因此,您可以简单地获取所需的数据,而无需执行所有文件。
玩得开心:)