PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
yii版php导出大文件csv格式的文件 最大可达到500w数据
原创杂文 / 时间:2014-06-04 17:36:33 / 阅读:2023 / 分享:0

        set_time_limit(0);
        $filename = '简历' .'.csv';
        header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
        Header('Accept-Ranges: bytes');
        header('Pragma: public');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        header('Content-Transfer-Encoding: binary');

        $fp = fopen('php://output', 'a');
        $head=array('序号','姓名','性别','年龄','电话','身份','当前城市','目标城市','投递邮箱','创建时间');

        foreach($head as $k=>$v){
            $head[$k]=iconv('utf-8','gbk',$v);
        }
        fputcsv($fp, $head);

        $allCount=mApplyMt::model()->getAllMtCount();
        $i=2;
        $start=0;
        $length=1000;
        $ExportData=array();
        while($start < $allCount){
            $allApplyMts=mApplyMt::model()->getAllMts($start,$length);
            $start+=$length;
            ob_flush();
            flush();
            foreach($allApplyMts as $key=>$value){
                $ExportData[$i]=$value['id'];
                $ExportData[$i+1]=iconv('utf-8','gbk',$value['name']);
                $ExportData[$i+2]=iconv('utf-8','gbk',mApplyStaff::$sexs[$value['sex']]);
                $ExportData[$i+3]=iconv('utf-8','gbk',$value['age']);
                $ExportData[$i+4]=iconv('utf-8','gbk',$value['phone']);
                $ExportData[$i+5]=iconv('utf-8','gbk',mApplyStaff::$work_types[$value['work_type']]);
                $ExportData[$i+6]=iconv('utf-8','gbk',$value['current_city']);
                $ExportData[$i+7]=iconv('utf-8','gbk',mMtCity::model()->getCityName($value['target_city']));
                $ExportData[$i+8]=iconv('utf-8','gbk',mMtCity::model()->getCityEmail($value['target_city']));
                $ExportData[$i+9]=iconv('utf-8','gbk',$value['ctime']);
                fputcsv($fp, $ExportData);
            }
        }

 

 

//为什么这里需要使用对象获取,因为每次获取一个数据需要开启和关闭一下数据库比长连接获取数据的效率更加低,所以使用query方式进行获取数据

    public function getAllMts($offset,$length){
        $sql="select * from {{apply}} order by ctime desc limit $offset,$length";
        return Yii::app()->db->createCommand($sql)->query();
    }

    //计算总数
    public function getAllMtCount(){
        $sql="select count(1) from {{apply}}";
        return Yii::app()->db->createCommand($sql)->queryScalar();
    }

 

关于作者
按时间分类