phpExcel导出大量数据出现内存溢出错误的解决方法


Posted in PHP onFebruary 28, 2013

phpExcel将读取的单元格信息保存在内存中,我们可以通过

PHPExcel_Settings::setCacheStorageMethod()

来设置不同的缓存方式,已达到降低内存消耗的目的!

1、将单元格数据序列化后保存在内存中

PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;

2、将单元格序列化后再进行Gzip压缩,然后保存在内存中

PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

3、缓存在临时的磁盘文件中,速度可能会慢一些

PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;

4、保存在php://temp

PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

5、保存在memcache中

PHPExcel_CachedObjectStorageFactory::cache_to_memcache

举例:

第4中方式:

 

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

第5种:

 

$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;  
$cacheSettings = array( 'memcacheServer'  => 'localhost',  
                        'memcachePort'    => 11211,  
                        'cacheTime'       => 600  
                      );  
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

其它的方法

第一个方法,你可以考虑生成多个sheet的方式,不需要生成多个excel文件,根据你数据总量计算每个sheet导出多少行, 下面是PHPExcel生成多个sheet方法:

面是PHPExcel生成多个sheet方法:

$sheet = $objPHPExcel->getActiveSheet(); 
$sheet->setCellValue('A1',$x);  
$sheet->setCellValue('B1',$y);

第二个方法,你可以考虑ajax来分批导出,不用每次刷新页面。

 

<a href="#" id="export">export to Excel</a> 
$('#export').click(function() {  
    $.ajax({  
        url: "export.php",   
        data: getData(),  //这个地方你也可以在php里获取,一般读数据库  
        success: function(response){  
            window.location.href = response.url;  
        }  
    })  
});
<?php 
//export.php 
$data = $_POST['data'];
$xls = new PHPExcel(); 
$xls->loadData($formattedData);
$xls->exportToFile('excel.xls');
$response = array( 
'success' => true, 
'url' => $url 
); 
header('Content-type: application/json'); 
echo json_encode($response); 
?>

数据量很大的话,建议采用第二种方法,ajax来导出数据,上面方法简单给了个流程,具体你自己补充!

PHP 相关文章推荐
php5 mysql分页实例代码
Apr 10 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
php下载文件的代码示例
Jun 29 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
phpstudy默认不支持64位php的解决方法
Feb 20 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
浅谈php的TS和NTS的区别
Mar 13 PHP
php7新特性的理解和比较总结
Apr 14 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
Apache中php.ini的设置方法
Feb 28 #PHP
PHP中如何定义和使用常量
Feb 28 #PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 #PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 #PHP
PHP删除非空目录的函数代码小结
Feb 28 #PHP
PHP生成随机用户名和密码的实现代码
Feb 27 #PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 #PHP
You might like
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
PHP下escape解码函数的实现方法
2010/08/08 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
vue项目关闭eslint校验
2018/03/21 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
python验证码识别的示例代码
2017/09/21 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
NumPy 数组使用大全
2019/04/25 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
python给list排序的简单方法
2020/12/10 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
工作决心书
2014/03/11 职场文书
文秘自荐信
2014/06/28 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
演讲比赛主持词
2015/06/29 职场文书