2010-08-16 142 views
2

我正在閱讀一個flie,基本上大約有500,000行被|對於我解析並嘗試通過CLI插入到數據庫中的列來說。是否有更好的方式來讀取它以便我可以使用它?PHP閱讀大文本文件

目前我將它作爲:

$fd = fopen ($txtFileName, "r"); 
while (!feof ($fd)) {  
    $buffer = fgets($fd);  
    $lines[] = $buffer; 
} 
fclose ($fd); 

$i=0; 
#hearder keys $t = $lines[1]; 

$keys = explode('|',$t); 

但是我開始用較大的文件運行內存不足..任何幫助,將不勝感激。謝謝

回答

4

在開始處理它之前是否真的需要在內存中擁有所有數據?通常最好是閱讀一條線,做一些處理(例如計算聚合統計數據或進行數據庫更新),然後丟棄它並轉到下一行。

如果您確實需要在內存中執行所有操作,那麼我建議您在系統中沒有大量內存的情況下,PHP可能不適合作業。

+0

謝謝,是的..我應該從一開始就做到這一點,而不是全部閱讀。 乾杯! – Petrogad 2010-08-16 19:42:13

1

當然。
立即將它插入數據庫中,不要存儲在數組中

2

爲什麼不逐行讀取它?首先閱讀標題,然後閱讀一行,插入值,讀一行,插入值等等,然後你的記憶要求就會很小。

根據您訪問數據庫的方式,您可能需要對插入進行批處理,當然,與一次加載整個文件相比,一批100甚至1000個存儲的成本仍然相對較低走。