摘要:场景和痛点说明今天因为一个老同学找我,说自己公司的物流业务都是现在用处理,按月因为数据量大,一个差不多有百万数据,文件有接近,打开和搜索就相当的慢联想到场景要导入数据,可能数据量很大,这里利用常用的一些方法比如会常有时间和内存限制问题下面我
场景和痛点 说明
今天因为一个老同学找我,说自己公司的物流业务都是现在用excel处理,按月因为数据量大,一个excel差不多有百万数据,文件有接近100M,打开和搜索就相当的慢编写过程 说明联想到场景:要导入数据,可能excel数据量很大,这里利用常用的一些方法比如phpexcel会常有时间和内存限制问题
下面我们就利用一个利用流处理的类库SpreadsheetReader来做大excel的读取
关键具体在代码里注释代码
Sheets(); if (!$sheets) { die("没有工作表"); } //改变当前处理的工作表 $Reader->ChangeSheet(0); //打印当前所在工作表的当前所在行数据 var_dump($Reader->current()); //因为reader类集成了Iter所以可以用迭代方式处理 //这里提醒 如果文件超大,这边的处理速度会过慢,不过不会引发内存性能问题 //$i = 0; //foreach ($Reader as $Row) //{ // if ($i>=3) { // break; // } // // echo $i . PHP_EOL; // print_r($Row); // // $i++; //} $endTime = microtime(true); $memoryUse = memory_get_usage(); echo "内存占用:" . convert($memoryUse) . "; 用时:" . ($endTime - $startTime) . PHP_EOL;结果 测试说明
上面读取的example1.xlsx文件有100M左右,读写过慢,测试只开了读取当前默认工作表的当前所在行数据日志记录内存使用率
因数据敏感,已做屏蔽
147.77 kb array (size=50) 0 => string "xxxxxxxxxxxxxx" (length=25) 1 => string "xxxxxxxxxxxxxx" (length=15) 2 => string "xxxxxxxxxxxxxx" (length=18) 3 => string "xxxxxxxxxxxxxx" (length=12) 4 => string "xxxxxxxxxxxxxx" (length=12) 5 => string "xxxxxxxxxxxxxx" (length=12) 6 => string "xxxxxxxxxxxxxx" (length=24) 7 => string "xxxxxxxxxxxxxx" (length=12) 8 => string "xxxxxxxxxxxxxx" (length=27) 9 => string "xxxxxxxxxxxxxx" (length=12) 10 => string "xxxxxxxxxxxxxx" (length=15) 11 => string "xxxxxxxxxxxxxx" (length=28) 12 => string "xxxxxxxxxxxxxx" (length=9) 13 => string "xxxxxxxxxxxxxx" (length=12) 14 => string "xxxxxxxxxxxxxx" (length=9) 15 => string "xxxxxxxxxxxxxx" (length=6) 16 => string "xxxxxxxxxxxxxx" (length=9) 17 => string "xxxxxxxxxxxxxx" (length=3) 18 => string "xxxxxxxxxxxxxx" (length=6) 19 => string "xxxxxxxxxxxxxx" (length=3) 20 => string "xxxxxxxxxxxxxx" (length=15) 21 => string "xxxxxxxxxxxxxx" (length=15) 22 => string "xxxxxxxxxxxxxx" (length=19) 23 => string "xxxxxxxxxxxxxx" (length=13) 24 => string "xxxxxxxxxxxxxx" (length=19) 25 => string "xxxxxxxxxxxxxx" (length=12) 26 => string "xxxxxxxxxxxxxx" (length=12) 27 => string "xxxxxxxxxxxxxx" (length=12) 28 => string "xxxxxxxxxxxxxx" (length=6) 29 => string "xxxxxxxxxxxxxx" (length=12) 30 => string "xxxxxxxxxxxxxx" (length=6) 31 => string "xxxxxxxxxxxxxx" (length=15) 32 => string "xxxxxxxxxxxxxx" (length=24) 33 => string "xxxxxxxxxxxxxx" (length=18) 34 => string "xxxxxxxxxxxxxx" (length=18) 35 => string "xxxxxxxxxxxxxx" (length=24) 36 => string "xxxxxxxxxxxxxx" (length=12) 37 => string "xxxxxxxxxxxxxx" (length=18) 38 => string "xxxxxxxxxxxxxx" (length=21) 39 => string "xxxxxxxxxxxxxx" (length=9) 40 => string "xxxxxxxxxxxxxx" (length=9) 41 => string "xxxxxxxxxxxxxx" (length=18) 42 => string "xxxxxxxxxxxxxx" (length=21) 43 => string "xxxxxxxxxxxxxx" (length=15) 44 => string "xxxxxxxxxxxxxx" (length=12) 45 => string "xxxxxxxxxxxxxx" (length=6) 46 => string "xxxxxxxxxxxxxx" (length=12) 47 => string "xxxxxxxxxxxxxx" (length=22) 48 => string "xxxxxxxxxxxxxx" (length=22) 49 => string "" (length=0) 内存占用:207.55 kb; 用时:9.5835480690002
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29029.html
摘要:场景和痛点说明我们工作场景都常会导出相关的数据,有时候需要大量的数据,,都有可能我们现有方案都是直接利用等类库来操作,的加载或是写入一次导出会遇到超时内存和时间限制问题,就算我们依旧不是最好的方案下面我们利用输出,把数据依次输出清空再输出的 场景和痛点 说明 我们工作场景都常会导出相关的excel数据,有时候需要大量的数据,10W,100W都有可能我们现有方案都是直接利用phpexce...
摘要:而常用的包需要把所有数据拿到后才能生成,在面对生成超大数据量的文件时这显然是会造成内存溢出的,所以考虑使用让边写入输出流边让浏览器下载的形式来完成需求。 最近接到一个需求,通过选择的时间段导出对应的用户访问日志到excel中, 由于用户量较大,经常会有导出50万加数据的情况。而常用的PHPexcel包需要把所有数据拿到后才能生成excel, 在面对生成超大数据量的excel文件时这显然...
关于 PHP 导出 excel csv 常用的有 PHPexcel ,本文整理了一些其他方案。 高性能 Excel 扩展 sudo apt-get install -y zlib1g-dev git clone https://github.com/jmcnamara/libxlsxwriter.git cd libxlsxwriter make && sudo make install // ...
摘要:四层负载均衡不会引起超时。动态修改包的目标地址,并转发数据包使其到达不同的机器上来实现负载均衡的目的,因此节点不会引起超时。七层负载均衡等待上游响应超时。例如使用多线程并发减少远程查询的总体时间如需数据有序,可以使用方案。 B端业务经常要提供下载报表的功能,一般的方法是先查询出所有数据,然后在内存中组装成报表(如XLS/XLSX格式)后统一输出。但是如果生成报表需要查询的数据量很大,远...
摘要:过去工作中使用较多,碰到并解决了各种大大小小的问题,总结出这样一篇文章,一方面记录自己踩过的坑,一方面与大家分享,让大家少走弯路,并不断完善之,欢迎大家去上面和提交,不断补充和优化,打造最全面的开发解决方案地址原文地址基础小试牛刀引用文 过去工作中使用PHPExcel较多,碰到并解决了各种大大小小的问题,总结出这样一篇文章,一方面记录自己踩过的坑,一方面与大家分享,让大家少走弯路,并不...
阅读 893·2021-10-18 13:32
阅读 3463·2021-09-30 09:47
阅读 2132·2021-09-23 11:21
阅读 1856·2021-09-09 09:34
阅读 3454·2019-08-30 15:43
阅读 1494·2019-08-30 11:07
阅读 1033·2019-08-29 16:14
阅读 661·2019-08-29 11:06