猿问

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

导入或者导出1000+左右基本还勉强可以

但是数量超过5000+的时候,就直接崩了,无响应……

这个应该如何解决,php.ini已经修改了配置,还是不行,还是应该修改缓存位置?

千巷猫影
浏览 2981回答 8
8回答

慕尼黑5688855

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

哔哔one

减少内存占用方法: 设置缓存 $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内存上限了

胡说叔叔

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

30秒到达战场

按行读取 比较靠谱 修改php.ini并不推荐,卡顿

慕标琳琳

spout 用这个扩展试试spout

阿波罗的战车

命令行执行:)

FFIVE

setActiveSheetIndex($i),做分页

慕侠2389804

建议用csv把 phpexcel 实在是太耗内存了goodby/csv 这个拓展就挺好的 功能很全
随时随地看视频慕课网APP
我要回答