簡體   English   中英

在PHP中逐行讀取大型文件的文件?

[英]Reading a file line by line for large files efficiently in PHP?

我的應用讀取一行5MB-10MB的大文件,並逐行輸入json條目。

每行由一個解析器處理,該解析器被饋送到多個解析器並分別進行處理。 讀取文件后,將移動文件。 本程序將不斷被處理文件。

該程序當前與@file_get_contents($filename) 該程序的結構按原樣工作。

問題是file_get_contents將整個文件作為數組加載,整個系統運行一分鍾。 我懷疑如果逐行讀取它而不是等待文件加載到內存中,我會提高速度(我可能是錯的,可能會提出建議)。

有太多的文件處理程序可以做到這一點。 什么是實現我所需的最有效方法,哪種文件讀取方法最適合?

我有fopenfreadreadfilefilefscanf可以與我的頭頂抗衡。 但是,當我為他們閱讀該手冊時,它的所有代碼都可以讀取通用文件,而沒有明確說明什么是較大文件的最佳選擇。

$file = fopen("file.json", "r");

if ($file)
{
    while (($line = fgets($file)) !== false) 
    {
        echo $line;
    }
}
else 
{
    echo "Unable to open the file";
}

Fget讀取直到達到EOL或EOF。 如果需要,您可以使用第二個arg加上應該讀取的數量。

有關fgets的更多信息: http : //us3.php.net/fgets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM