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数据,报内存溢出

你可能感兴趣的:(PHPExcel 大数量导出内存溢出)