导出数据 demo
以导出 100 万条数据为例:
 public function export()
    {
        //让程序一直运行
        set_time_limit(0);
        //设置程序运行内存
        ini_set('memory_limit', '128M');
        $fileName = '测试导出数据';
        header('Content-Encoding: UTF-8');
        header("Content-type:application/vnd.ms-excel;charset=UTF-8");
        header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
        //打开php标准输出流
        $fp = fopen('php://output', 'a');
        //添加BOM头,以UTF8编码导出CSV文件,如果文件头未添加BOM头,打开会出现乱码。
        fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
        //添加导出标题
        fputcsv($fp, ['ID', 'VALUE']);
        $step = 100; //循环次数
        $nums = 10000; //每次导出数量
        for ($i = 0; $i < $step; $i++) {
            $start = $i * $nums;
            $result = $this->table('m_test')
                ->offset($start)
                ->limit($nums)
                ->get();
            foreach ($result as $item) {
                fputcsv($fp, [$item->id,$item->value]);
            }
            //每1万条数据就刷新缓冲区
            ob_flush();
            flush();
        }
    }
CSV 导出说明
CSV 格式文件最大行数是没有上限的,在国外科学数据网站下载的 CSV 文件有几十 G上百 G,行数多大几十亿上百亿行;但是大文件 CSV 打开编辑的软件就基本没有,Excel、WPS、OpenOffice 仅支持打开编辑前面 1048576 行;Snapde 软件支持的行数多一些,一次可以打开编辑一两千万行的 CSV 数据,速度很快。
为什么不用 Excel 导出?
fputcsv() 要比PHPExcel好很多;因为 CSV 文件较小,CSV 文件数据可存放数量可大可小,CSV 生成不占用大量 CPU 和时间,而 Excel 的生成时间随着文件数据量的增加成而所需时间越多。
	更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。