为什么使用PHP只能读取非常大的CSV文件中的1000条记录?

5

我正在学习使用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文件中的所有行吗?

1
fgetcsv($fp,1024) 更改为 fgetcsv($fp)。通常情况下,除非您的文件中有正常且预期的(最大)宽度行,否则不要设置第二个参数。 - CrayonViolent
请使用fgetcsv($ftp)。具体信息请参考http://php.net/manual/en/function.fgetcsv.php。 - test
1
我的php.ini文件有以下内容: max_input_vars = 6000 max_execution_time = 5000 memory_limit = 256M - User56756
1
好的,"更容易"的方法是将最后一个输出项与文件中的最后一项进行比较。在您的页面上,在最终的结束标记"</td></tr></table>"之前,我看到的最后一件事是Photoshop Extended ALL IE ALL 300 000 plus Gold 2Y 24 Months PRO。那是您文件中的最后一件事吗? - CrayonViolent
1
你能发布一下1010、1011和1012行的内容吗?至少,你可以检查一下是否有逗号、反斜杠或类似的东西吗? - SpongePablo
显示剩余14条评论
2个回答

0

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

GitHub上的ParseCSV类

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


-2

很少有我不喜欢一个回答的情况,但当我确实不喜欢时,我会确保解释原因。大多数人不解释他们的负评的原因是为了避免这种反向批评。如果你对一个问题有话要说,但不是一个回答,最好在评论中表达。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接