【问题标题】:PHP CSV export not working after 10000 RecordsPHP CSV 导出在 10000 条记录后不起作用
【发布时间】:2014-04-25 07:34:08
【问题描述】:

当用户有超过 10000 行时,PHP 导出 csv 不起作用。导出 csv 需要很长时间,并且在某些时候 CSV 会死掉。

我还设置了ini_set('memory_limit', '-1') 和 set_time_limit。

我想将超过 10000 条记录导出到 csv 中。

我的代码如下:

header('Content-type: text/csv; charset=UTF-8');
header('Content-Encoding: UTF-8');
header("Content-disposition: xls" . date("Y-m-d") . ".csv");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename = Mycsv.csv");
header("Content-type: application/x-download");
header("Content-Length: " . strlen($out));
echo $out;
exit;

【问题讨论】:

  • 你从哪里得到$out
  • 我已经从数据库中获取数据并通过循环存储在 $out 变量中。
  • 那么您可能使用了太多内存。开启报错查看——error_reporting(E_ALL);
  • 你不应该把这么大的数据放在 $out 变量中。而是在循环遍历它们时开始打印行。这样,浏览器会立即显示文件保存对话框和进度条,但没有明确指示文件下载何时完成。但是,嘿,有视觉反馈总比没有视觉反馈要好。

标签: php mysql csv export export-to-csv


【解决方案1】:

可能由于某些特殊字符的编码,Content-Length strlen($out) 与下载的文件大小不匹配。

尝试评论header("Content-Length: " . strlen($out));这一行,看看它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2017-01-21
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多