<?php//让程序一直运行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,['姓名','年龄','地区']);//链接数据库$dsn="mysql:host=127.0.0.1;port=3306;dbname=demo;charset=utf8";$pdo=newPDO($dsn,'root','');$step=100;//循环次数$nums=10000;//每次导出数量for($i=0;$i<$step;$i++){$start=$i*10000;$sql="SELECT uname,age,city FROM `hd_test` ORDER BY `id` LIMIT {$start},{$nums}";$pdostatement=$pdo->query($sql);$result=$pdostatement->fetchAll(PDO::FETCH_ASSOC);foreach($resultas$item){fputcsv($fp,$item);}//每1万条数据就刷新缓冲区ob_flush();flush();}