我有这个1000万字的文件,每行一个字。我正在尝试打开该文件,读取每一行,将其放入数组中并计算每个单词的出现次数。
wartek
mei_atnz
sommerray
swaggyfeed
yo_bada
ronnieradke
… and so on (10M+ lines)
我可以打开文件,阅读它的大小,甚至可以逐行解析它,echo
浏览器上的行(当然它很长),但是当我'在尝试执行任何其他操作时,脚本只是拒绝执行。没有错误,没有警告,没有die(…)
,没有。
访问该文件总是正常的,但这是不会以相同的成功执行的操作。我试过这个并且它有效......
while(!feof($pointer)) {
$row = fgets($pointer);
print_r($row);
}
......但这不是:
while(!feof($pointer)) {
$row = fgets($pointer);
array_push($dest, $row);
}
还尝试使用SplFileObject
或file($source, FILE_IGNORE_NEW_LINES)
每次都获得相同的结果(对于大文件不行,对小文件也没关系)
猜测问题不是大小(150 ko),但可能是长度(10M +行),我把文件缩小到20k而没有任何改进,然后再将它减少到~8k行,它工作
我还删除了set_time_limit(0);
的时间限制,或删除了(几乎) php.ini 和我的脚本ini_set('memory_limit', '8192M');
中的任何内存限制。关于错误我可以,我将error_reporting(E_ALL);
设置在我的脚本顶部。
所以问题是:
echo
或print_r
但不执行任何其他操作?答案 0 :(得分:0)
我认为你可能会遇到很长的执行时间:
How to increase the execution timeout in php?
不同的操作需要不同的时间。打印可能比将10M新数据逐个推送到阵列中要容易得多。奇怪的是,如果您没有收到任何错误消息,那么您应该在某个地方收到进程超时。