当前位置: 代码迷 >> 综合 >> PHP大数据导出csv优化,导出出现504处理方式
  详细解决方案

PHP大数据导出csv优化,导出出现504处理方式

热度:25   发布时间:2024-02-07 22:51:49.0

$title = ['粉丝编号','用户名','联系电话','状态','创建时间','订单数量'];
set_time_limit(0);
header('Pragma:public');        
header('Expires:0');
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');    
header('Content-Type:application/force-download');
header('Content-Type:application/vnd.ms-excel');
header('Content-Type:application/octet-stream');
header('Content-Type:application/download');
header('Content-Type:text/csv');
header('Content-Transfer-Encoding:binary');
header("Content-Disposition:attachment; filename=大数据导出.csv");
//打开文件
$fp = fopen('php://output', 'a');
//数据写入csv文件
fputcsv($fp, $title);
//已经插入1百万数据,查询全部数据
$total = Db::table('user')->where('is_delete',0)->count();
if($total>0 && !empty($total)){
//根据自己业务进行增加或者减少
$psize = 10000;
$step = ceil($total/$psize);//获取查询次数
for($s = 1; $s <= $step; ++$s) {
$pindex = ($s - 1) * $psize;
//查询订单数量
$lists = Db::table('user')->where('is_delete',0)->limit($pindex,$psize)->select();
foreach ($lists as $index => $r) {
//根据自己业务添加索引
$r['ordercount'] = Db::table('order')->where(['status'=>1,'is_pay'=>1])->count();
//数据写入csv文件
fputcsv($fp, $r);
}
//数据从PHP的缓冲中释放出来
ob_flush();
//被释放出来的数据发送到浏览器
flush();
}
}