2011-07-26 167 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)關閉它。