为什么项目中使用hhxsv5/laravel-s扩展包后,原有的csv导出功能就不可用了?
项目中不使用swoole-s包的时候,导出功能没问题,后来加入swoole之后,导出就只能在浏览器打印出数据,而不是导出成一个csv文件了,请大神指点。
导出代码使用如下:
public function csvDwonloadNew($filename, $fields, $data)
{
set_time_limit(0);
ob_start();
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $filename . '.csv"');
header('Cache-Control: max-age=0');
$fp = fopen('php://output', 'a+');
$head = $fields;
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv('utf-8', 'GBK', $v);
}
fputcsv($fp, $head);
//计数器
$num = 0;
//每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;
$count = count($data);
for ($i = 0; $i < $count; $i++) {
$num++;
//刷新一下输出buffer,防止由于数据过多造成问题
if ($limit == $num) {
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
foreach ($row as $key => $value) {
$row[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($fp, $row);
}
}
}
推荐文章: