[英]Reading a file line by line for large files efficiently in PHP?
我的應用讀取一行5MB-10MB的大文件,並逐行輸入json條目。
每行由一個解析器處理,該解析器被饋送到多個解析器並分別進行處理。 讀取文件后,將移動文件。 本程序將不斷被處理文件。
該程序當前與@file_get_contents($filename)
。 該程序的結構按原樣工作。
問題是file_get_contents
將整個文件作為數組加載,整個系統運行一分鍾。 我懷疑如果逐行讀取它而不是等待文件加載到內存中,我會提高速度(我可能是錯的,可能會提出建議)。
有太多的文件處理程序可以做到這一點。 什么是實現我所需的最有效方法,哪種文件讀取方法最適合?
我有fopen
, fread
, readfile
, file
和fscanf
可以與我的頭頂抗衡。 但是,當我為他們閱讀該手冊時,它的所有代碼都可以讀取通用文件,而沒有明確說明什么是較大文件的最佳選擇。
$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.