【问题标题】:why only 1000 records are read from a very large csv file using php?为什么使用 php 从一个非常大的 csv 文件中只读取 1000 条记录?
【发布时间】:2015-08-08 22:20:14
【问题描述】:

我只是在学习使用 PHP,因为我的工作提出了要求,我试图弄清楚为什么在我的 CSV 文件中的 124938 条记录中只有 1011 条记录被读取。这是我正在使用的非常基本的代码。

<?php
print "<table>\n";
$fp = fopen('STDPRICE_FULL.csv','r') or die("can't open file");
while($csv_line = fgetcsv($fp,1024)) {
  print '<tr>';
  for ($i = 0, $j = count($csv_line); $i < $j; $i++) {
    print '<td>'.$csv_line[$i].'</td>';
  }
  print "</tr>\n";
} 
print '</table>\n';
fclose($fp) or die("can't close file");
?>

当我打印 count($csv_line) 时,它只显示 1011 条记录。
现在我相信它可能与整数的大小有关,但我不确定。
另外,我搜索了增加整数大小的方法,但 PHP 似乎可以自己处理类型转换。
谁能建议我可以做些什么来读取 CSV 文件中的所有行?

【问题讨论】:

  • 这可能是某种内存问题,因为这些记录很多。你的 php 内存限制和脚本执行时间是多少?
  • $j = count($csv_line); --- 这是什么?比如,你为什么认为它是许多行/记录?
  • fgetcsv($fp,1024) 更改为 fgetcsv($fp)。通常,您不想设置第二个参数,除非您的文件中有常规的、预期的(最大)宽度行
  • 我的 php.ini 文件有以下 max_input_vars = 6000 max_execution_time = 5000 memory_limit = 256M
  • 好吧,“更简单”的做法是将最后一项输出与文件中的最后一项进行比较。它们匹配吗? Photoshop Extended ALL IE ALL 300 000 plus Gold 2Y 24 Months PRO 这是我在您的页面上最后关闭 &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; 之前看到的最后一件事。这是你文件中的最后一件事吗?

标签: php csv count


【解决方案1】:

使用http://dev.mysql.com/doc/refman/5.1/en/load-data.html

然后使用数据库。

【讨论】:

    【解决方案2】:

    使用 ParseCSV 类。我们已经成功地用于处理非常大的文件。

    ParseCSV Class at GitHub

    它处理了我们在 PHP 中处理 CSV 文件时遇到的许多问题。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多