PHP百万级数据导出方案
5页1、PHPPHP 百万级数据导出方案(多百万级数据导出方案(多 csvcsv 文件压缩)实例讲解文件压缩)实例讲解概述:概述:最近公司项目要求把数据除了页面输出也希望有导出功能,虽然之前也做过几个导出功能,但这次数据量相对比较大,差不多一天数据就 20W 条,要求导 7 天或者 30 天,那么数据量就轻松破百万了甚至破千万,因此开发的过程中发现了一些大数据导出的坑,在此跟大家分享一下,互相学习。准备:准备:1 1、PHPPHP 设置坑:设置坑:set_time_limit 设置脚本最大执行时间:此配置一般 PHP 默认是 30 秒,如果你是数据小的,可能就不会发现有该设置问题,但如果你数据达到了百万级导出,往往 30 秒是不够的,因此你需要在你的脚本中添加 set_time_limit(0),让该脚本没有执行时间现在memory_limit PHP 的内存限定:此配置一般 php 默认是 128M,如果之前做过小数据的朋友可能也会动过这个配置就能解决许多问题,或许有人想,你大数据也把这个调大不就行了吗?那么真的是 too young too native 了,你本地能设置 1G 或者无限制
2、或许真的没问题,但是正式场,你这么搞迟早会出事的,一个 PHP 程序占那么大的内存的空间,如果你叫你公司运维帮忙调一下配置,估计运维一定很不情愿,服务器硬件这么搞也是太奢侈了。所以说,我们要尽量避免调大该设置。2 2、excelexcel 坑:坑:既然是导出数据,大伙们当然马上想到了 excel 格式了,多方便查看数据呀,然而万万没想到 excel 也是有脾气的呀! 表数据限制:?1 2Excel 2003 及以下的版本。一张表最大支持 65536 行数据,256 列。 Excel 2007-2010 版本。一张表最大支持 1048576 行,16384 列。也就是说你想几百万条轻轻松松一次性导入一张 EXCEL 表是不行的,你起码需要进行数据分割,保证数据不能超过 104W 一张表。PHPexcel 内存溢出:既然数据限制在 104W,那么数据分割就数据分割呗,于是你尝试 50W 一次导入表,然而 PHPexcel 内部有函数报内存溢出错误,然后你就不断的调小数据量,直到 5W 一次导入你都会发现有内存溢出错误。这是为什么呢,虽然你分割数据来导入多个数据表,但是最后 PHPexcel
3、 内部还是一次性把所有表数据放进一个变量中来创建文件额,这几百万数据一个变量存储,你想内存不溢出,还真有点困难。(后来看了一些文章发现 PHPExcel 也有解决方案,PHPExcel_Settings:setCacheStorageMethod 方法更改缓冲方式来减小内存的使用)3 3、csvcsv 坑:坑:EXCEL 这么麻烦,我不用还不行吗?我用 csv 文件储存,既不限制数量,还能直接用EXCEL 来查看,又能以后把文件导入数据库,一举几得岂不是美哉?咦,少侠好想法!但是 CSV 也有坑哦!输出 buffer 过多:当你用 PHP 原生函数 putcsv()其实就使用到了输出缓存 buffer,如果你把几百万的数据一直用这个函数输出,会导致输出缓存太大而报错的,因此我们每隔一定量的时候,必须进行将输出缓存中的内容取出来,设置为等待输出状态。具体操作是:? 1 2ob_flush(); flush();具体说明介绍:PHP flush()与 ob_flush()的区别详解EXCEL 查看 CSV 文件数量限制:大多数人看 csv 文件都是直接用 EXCEL 打开的。额,这不就是回
《PHP百万级数据导出方案》由会员m****分享,可在线阅读,更多相关《PHP百万级数据导出方案》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2023-08-28 7页
2023-08-15 11页
2020-05-10 4页
2020-05-10 4页
2020-05-10 6页
2020-05-10 5页
2020-05-10 5页
2020-05-10 3页
2020-05-10 5页
2020-05-10 4页