当前位置: 首页 > 后端技术 > PHP

PHP实现百万级数据快速导出CSV

时间:2023-03-30 05:40:56 PHP

PHP实现百万级数据导出这里使用服务器的缓存来实现:1:创建测试表并添加测试数据1:创建测试表这里我建了一个测试表,字段为:id,name,age,email2:添加测试数据(1)首先手动向表中添加几行数据然后执行以下命令批量添加数据INSERTINTOtest(name,age,email)SELECTname,age,emailFROMtest;多次执行以上命令test数据会呈指数增长,所以可以得到大量的测试数据2:php实现百万级数据的导出(这里我使用的是Yii框架自带的查询命令)//让程序一直运行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,['name','age','mailbox']);$nums=10000;//每次导出的次数$count=Test::find()->count();$step=ceil($count/$nums);//循环次数for($i=0;$i<$步骤;$i++){$result=Test::find()->select(['name','age','email'])->limit($nums)->offset($i*$nums)->asArray()->所有();foreach($resultas$item){fputcsv($fp,$item);}//每10000条数据刷新一次缓冲区ob_flush();冲洗();}退出;经过上面的测试可以发现,导出百万左右的数据只需要十秒左右,效率还不错。参考:https://blog.csdn.net/weixin_...