ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP导出百万级数据到CSV文件

2021-12-10 11:30:54  阅读:153  来源: 互联网

标签:fp PHP 导出 step set limit CSV id


实测
框架:tp3
环境:mamp搭建本地环境 mackbook pro
时间:8秒

public function excel(){
        //让程序一直运行
        set_time_limit(0);
        //设置程序运行内存
//        ini_set('memory_limit', '128M');
        ini_set("memory_limit", "-1");
        ini_set("max_execution_time", "500");
        ignore_user_abort(true);

        $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', '商品编号', '药品名称','药品条码','药品品牌','规格','形态','厂家','是否为处方药','国药准字','拼音']);
        $limit = 50000;
        $res = M('drugs')->field('id,drugsnum,name,barcode,brand,specs,model_val,company,prescription,chinese_standard,spell')->limit(0,$limit)->order('id asc')->select();
        $step = 0;
        for($i=0;$i<20;$i++){ //由于数据库数量有限所以 循环两次导出测试数据 增加导出条数
            foreach ($res as $k => $v) {
                $step = $step + 1;
                if ($step == 1000) {
                    ob_flush();
                    flush();
                    $step = 0;
                }
                $item = [$v['id'], $v['drugsnum'], $v['name'], '`'.$v['barcode'], $v['brand'], $v['specs'], $v['model_val'], $v['company'], $v['prescription'], $v['chinese_standard'], $v['spell']];
                fputcsv($fp, $item);
            }
        }
    }

标签:fp,PHP,导出,step,set,limit,CSV,id
来源: https://blog.csdn.net/qq_37468919/article/details/121851669

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有