PHPExcel 大数量导出内存溢出

最近做导出数据时发现PHPExcel超过3W数据执行脚本会内存溢出,虽然将ini_set("memory_limit",'1024M');调整到这么大,还是内存溢出,而且这种本来就是不合理的一种做法,后来在网上查的解决办法是在new \PHPExcel() 之前加上缓存,代码如下:

$cacheMethod = \PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;

$cacheSettings = [' memoryCacheSize ' => '128MB'];

\PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

但是执行没有什么效果,最后改成使用csv导出。

$head = ['ID','审核日期','关键词','标题', '描述','性别', '年龄', '回复'];

$filename = implode('|',$params);

unset($params);

$path = 文件存放目录;

if(!is_dir($path)){

    mkdir($path,0777,true);//第三个参数如果为true则循环创建不存在的目录

}

$filePath = $path. $filename.'.csv';

$fp = fopen($filePath, 'w');//若csv文件不存在 则自动创建

fputcsv($fp, $head);

ob_start();

中间是循环查询数据将数据put到csv中

ob_flush();

flush();

fclose($fp);

经测试 使用csv 导出17W数据,使用227秒,文件大小共120M

使用PHPExcel 导出4W数据,报内存溢出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容