PHP导出3w条数据成表格

亲测有效,三万条数据秒秒钟导出

先进行数据表插入数据

ini_set('memory_limit','1024M'); //设置程序运行的内存
    ini_set('max_execution_time',0); //设置程序的执行时间,0为无上限
    ob_end_clean();  //清除内存
    ob_start();
        $in = 0;
        for($i=2880;$i<=30000; $i++) {
            $data = ['uname'=>'uname:'.$i, 'aname'=>'账号:'.$i, 'pwd'=>'111'.$i];
            $r = DB::table('enroll_activity_admin')->insert($data);
             if($in==1000){ //每次写入1000条数据清除内存
                    $in=0;
                    ob_flush();//清除内存
                   
                }
                $in++;
        }  
        ob_end_clean();die;

  在进行导出数据

    $fileName = '酒店';
    $headArr = ['姓名', '账号', '密码']; //表头,名称可自定义
    $data = Db::table('enroll_activity_admin')->where('is_del','0')->field('uname,aname,pwd')->select();
    ini_set('memory_limit','1024M'); //设置程序运行的内存
    ini_set('max_execution_time',0); //设置程序的执行时间,0为无上限
    ob_end_clean();  //清除内存
    ob_start();
    header("Content-Type: text/csv");
    header("Content-Disposition:filename=".$fileName.'.csv');
    $fp=fopen('php://output','w');
    fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
    fputcsv($fp,$headArr);
    $index = 0;
    foreach ($data as $item) {
        if($index==1000){ //每次写入1000条数据清除内存
            $index=0;
            ob_flush();//清除内存
            flush();
        }
        $index++;
        fputcsv($fp,$item);
    }
 
    ob_flush();
    flush();
    ob_end_clean();

 

posted @ 2019-11-12 13:27  御世制人  阅读(348)  评论(0编辑  收藏  举报