2011-07-26 118 views
3

在Java中,我使用Scanner逐行读取文本文件,因此内存使用率将非常低,因为一次内存中只有一行。 PHP中有类似的方法吗?在PHP中逐行读取大文件

回答

12

使用FSEEK,FGETS

$handle = fopen("/tmp/uploadfile.txt", "r") or die("Couldn't get handle"); 
if ($handle) { 
    while (!feof($handle)) { 
     $buffer = fgets($handle, 4096); 
     // Process buffer here.. 
    } 
    fclose($handle); 
} 

Reading very large files in PHP

+4

如何 “逐行” 阅读它,而不是 “由缓冲区缓存”? –

+0

这个缓冲区的东西也让我感到害怕。缓冲区是否包含多行,如果是这样,我们应该如何浏览它?我粗略地使用了这段代码,但删除了这个'4096'的参数。这也让我怀疑,如果一条线比4096更长,会发生什么 – Balmipour

1

fgets($fileHandle)是你在找什么。您使用fopen("filename.txt", "r")获取文件句柄,然后用fclose($fileHandle)关闭它。