代码之家  ›  专栏  ›  技术社区  ›  Petrogad

PHP读取大文本文件

  •  2
  • Petrogad  · 技术社区  · 15 年前

    我正在阅读一个flie,其中基本上有超过500000行,用分隔出我正在解析的列,并尝试通过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);
    

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

    3 回复  |  直到 15 年前
        1
  •  4
  •   Gian    15 年前

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

    如果您真的需要对内存中的所有内容都这样做,那么我会恭敬地建议,如果您的系统上没有足够的内存,PHP可能不是合适的工作工具。

        2
  •  2
  •   Jon Skeet    15 年前

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

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

        3
  •  1
  •   Your Common Sense    15 年前

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

    推荐文章