美文网首页
PHPExcel 大数量导出内存溢出

PHPExcel 大数量导出内存溢出

作者: hgjvse | 来源:发表于2018-08-21 16:05 被阅读0次

    最近做导出数据时发现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 大数量导出内存溢出

          本文链接:https://www.haomeiwen.com/subject/vqdjiftx.html