【问题标题】:PHP Reading Large Text FilesPHP读取大文本文件
【发布时间】:2011-03-30 14:58:59
【问题描述】:

我正在阅读一个实际上有大约 500,000 行以上的苍蝇,用 | 分隔。对于我正在解析并尝试通过 CLI 插入数据库的列。有没有更好的方法来读取它以便我可以使用它?

目前我将其插入为:

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

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

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

但是,我开始用较大的文件耗尽内存。任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: performance parsing memory php


    【解决方案1】:

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

    如果您确实需要对内存中的所有内容执行此操作,那么我会恭敬地建议,如果您的系统上没有大量可用内存,PHP 可能不是适合该工作的工具。

    【讨论】:

    • 谢谢,是的。我应该从一开始就这样做,而不是全部阅读。干杯!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      当然。
      立即插入数据库,不要存储在数组中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-03
        • 2017-01-21
        • 2013-09-01
        相关资源
        最近更新 更多