为了账号安全,请及时绑定邮箱和手机立即绑定

phpexcel 导出+导入大量数据造成曾内存溢出

phpexcel 导出+导入大量数据造成曾内存溢出

PHP
千巷猫影 2019-03-12 00:18:25
导入或者导出1000+左右基本还勉强可以 但是数量超过5000+的时候,就直接崩了,无响应…… 这个应该如何解决,php.ini已经修改了配置,还是不行,还是应该修改缓存位置?
查看完整描述

8 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

执行的时候set_time_limit(0);
php.ini memory_limit = 1024M
我本地试了下,7万行,文件15M,可以打印的出来。
你php服务重启下试试
然后就是先试试看,是哪里出问题,如导入读取出问题,还是执行mysql出问题

查看完整回答
反对 回复 2019-03-18
?
哔哔one

TA贡献1854条经验 获得超8个赞

减少内存占用方法:

设置缓存

$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( ' memoryCacheSize ' => '8MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

只读取指定的sheet

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setLoadSheetsOnly( array("Worksheet1", "Worksheet2") );
$objPHPExcel = $objReader->load("test.xlsx");

如果还不够,那只能调整php内存上限了

查看完整回答
反对 回复 2019-03-18
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

可以做按行读取数据,导入数据库,在清理内存空间。导出做分页。

查看完整回答
反对 回复 2019-03-18
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

https://img1.sycdn.imooc.com//5c8f67c900013f2507520320.jpg
按行读取 比较靠谱 修改php.ini并不推荐,卡顿

查看完整回答
反对 回复 2019-03-18
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

spout

用这个扩展试试spout

查看完整回答
反对 回复 2019-03-18
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

命令行执行:)

查看完整回答
反对 回复 2019-03-18
?
FFIVE

TA贡献1797条经验 获得超6个赞

setActiveSheetIndex($i),做分页

查看完整回答
反对 回复 2019-03-18
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

建议用csv把 phpexcel 实在是太耗内存了
goodby/csv 这个拓展就挺好的 功能很全

查看完整回答
反对 回复 2019-03-18
  • 8 回答
  • 0 关注
  • 2980 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信