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 相关文章推荐
1.PHP简介
Oct 09 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
php防止sql注入代码实例
Dec 18 PHP
php使用curl获取https请求的方法
Feb 11 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
php中的explode()函数实例介绍
Jan 18 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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 表单数据的获取代码
2009/03/10 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
javascript 计算两个整数的百分比值
2009/12/26 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
Vue中props的使用详解
2018/06/15 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python实现简易版计算器
2020/06/22 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python实现的汉诺塔算法示例
2019/10/23 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
专科应届生求职信
2013/11/24 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
死亡证明书样本说明
2014/10/18 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
导游词之天津盘山
2019/11/01 职场文书