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 相关文章推荐
无数据库的详细域名查询程序PHP版(4)
Oct 09 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
浅谈json_encode用法
Mar 05 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
php源码的安装方法和实例
Sep 26 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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(视频)Http下载
2006/12/12 PHP
微信支付的开发流程详解
2016/09/13 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python3.2中的字符串函数学习总结
2015/04/23 Python
简单介绍Python中的floor()方法
2015/05/15 Python
python显示生日是星期几的方法
2015/05/27 Python
浅谈python import引入不同路径下的模块
2017/07/11 Python
python如何实现反向迭代
2018/03/20 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
体育教育专业毕业生自荐信
2013/11/15 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
2014年党务工作总结
2014/11/25 职场文书
教师年度个人总结
2015/02/11 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书