在 PHP 中将多个 CSV 文件输出到浏览器


Output Multiple CSV files to browser in PHP

我有一个大型数据表(在mongodb中),有超过500万行。我想将数据导出为 csv 并直接在浏览器中输出 csv。我正在使用PHP。

对于少于一百万行的较小记录集,以下代码可以完美运行。

set_time_limit(0);
$output = fopen("php://output",'w') or die("Can't open php://output");
header("Content-Type:application/csv"); 
header("Content-Disposition:attachment;filename=auditresults_$i.csv"); 
fputcsv($output, array('id','createdon','colum1','column2','column3','colum4'));                             
foreach ($items as $item) {               
     fputcsv($output, $item)                 
}            
fclose($output) or die("Can't close php://output");    

但是,当我导出大型数据集(例如 500 万行)时,上面的代码失败了。

我想看看是否有办法将上述结果分成 100,000 行的批次并通过浏览器输出多个 csv 文件。

您只能对请求发送一个响应。

解决方案可能是在您网站上的临时文件夹中输出多个 csv 文件,并将可下载的 url 链接发送到这些文件作为响应。