首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP读取大型文本文件

问PHP读取大型文本文件
EN

Stack Overflow用户
提问于 2010-08-17 03:31:28
回答 3查看 1.8K关注 0票数 2

对于我正在解析并试图通过CLI插入到数据库中的列,我正在读取一个由|分隔的大约500,000行的文件。有没有更好的方法读入,这样我就可以使用它了?

目前,我将其插入为:

代码语言:javascript
复制
$fd = fopen ($txtFileName, "r");  
while (!feof ($fd))  {     
     $buffer = fgets($fd);     
     $lines[] = $buffer;  
} 
fclose ($fd); 

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

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

然而,对于较大的文件,我开始耗尽内存。任何帮助都将不胜感激。谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-17 03:33:52

在开始处理数据之前,您真的需要将所有数据都存储在内存中吗?通常,最好读取一行,执行一些处理(例如,计算聚合统计数据或进行数据库更新),然后丢弃该行并转到下一行。

如果您真的需要使用内存中的所有内容来执行此操作,那么我建议,如果您的系统上没有大量可用内存,那么PHP可能不是合适的工具。

票数 4
EN

Stack Overflow用户

发布于 2010-08-17 03:34:34

为什么不逐行阅读呢?首先读取标题,然后读取一行,插入值,读取一行,插入值等,然后您的内存需求将很小。

当然,根据您访问数据库的方式,您可能希望批量插入-但与一次性加载整个文件相比,批量插入100个甚至1000个的内存开销仍然相对较小。

票数 2
EN

Stack Overflow用户

发布于 2010-08-17 03:33:47

好的。

立即将其插入数据库,而不是存储在数组中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3496614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档