php百万数据如何写入csv
这篇文章主要介绍了php百万数据如何写入csv的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php百万数据如何写入csv文章都会有所收获,下面我们一起来看看吧。
创新互联建站成立于2013年,先为巴中等服务建站,巴中等地企业,进行企业商务咨询服务。为巴中企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
需求:
百万数据写入 csv。
框架:
N 多年前老框架,百度都搜不到了,所以写法趋近原生
分析:
数据量过大,不能用浏览器请求写入 csv 下载,所以写个脚本调取
伪代码:
//xxx - 根据自己项目替换
//调取脚本文件
exec(xxx);
//脚本文件
//设置执行时间和内存
set_time_limit(0);
ini_set('memory_limit', '128M');
//循环获取
$id = 0;
$data = 'xxx'.'\n';//表头
while(true){
//SQL
$list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表,
if(empty($list)){
break;
}
foreach($list as $row){
$data .= '"' . $row['xxx'] . '",';
$data .= "\n";
$id = $row['id'];//更新最大id
}
//追加写入csv
file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND);
unset($data);//基础不好不确定初始化能不能清内存就先unset了
$data = '';//初始化
}
本质上就是分批写入,刚开始试验的时候是打算不把 file_put_contents 写在循环里的,后来发现数据量大的时候,几十万数据 $data 内存就超了另外如果超百万数据的话需要做分文件导出,excel 不支持打开超过 1048576 行,理论上就是加个 $all_count 参数计当前查询的总数,超过百万再加新文件。
关于“php百万数据如何写入csv”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“php百万数据如何写入csv”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。
新闻名称:php百万数据如何写入csv
标题网址:http://ybzwz.com/article/jejjie.html