2010-08-16 112 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个存储的成本仍然相对较低走。