php – 读取大文件时出现内存不足错误

我有一个大的csv,我想解析并插入我的数据库.我有这个 PHP
$target = '../uploads/'.$f;
$handle = fopen($target,"r");
$data = fgetcsv($handle,",");

$rows = array();

while ($data !== FALSE) {
    $rows[] =  $data;
}

fclose($handle);

if (count($rows)) {
             foreach ($rows as $key => $value) {

                  echo $value;

              }
          }

每次我尝试运行我的脚本时都会收到此错误

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes)

任何想法如何做到这一点?

我认为这部分是错误的:
$data = fgetcsv($handle,");
$rows = array();
while ($data !== FALSE) {
    $rows[] =  $data;
}

一次调用fgetcsv从$handle中读取一行.你需要把fgetcsv放在循环条件中:

$handle = fopen($target,");
while (($row = fgetcsv($handle,")) !== FALSE) {
    // Example insert - obvIoUsly use prepared statements/escaping/another DAL
    $db->query("INSERT INTO tbl (columns..) VALUES ({$row[0]},{$row[1]} ... )");
}

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...