PHP函数是否可以读取最大行数

时间:2017-08-23 13:43:53

标签: php

我有这个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);
}

还尝试使用SplFileObjectfile($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);设置在我的脚本顶部。

所以问题是:

  • 是否有PHP内置函数可以读取的最大行数?
  • 为什么我可以echoprint_r但不执行任何其他操作?

1 个答案:

答案 0 :(得分:0)

我认为你可能会遇到很长的执行时间:

How to increase the execution timeout in php?

不同的操作需要不同的时间。打印可能比将10M新数据逐个推送到阵列中要容易得多。奇怪的是,如果您没有收到任何错误消息,那么您应该在某个地方收到进程超时。