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 相关文章推荐
图形数字验证代码
Oct 09 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
php实现的任意进制互转类分享
Jul 07 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
php中的登陆login实例代码
Jun 20 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
PHP新手指南
Apr 01 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代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
破解Session cookie的方法
2006/07/28 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python图片的横坐标汉字实例
2019/12/04 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
会计毕业生求职简历的自我评价
2013/10/20 职场文书
商务日语专业毕业生求职信
2013/10/26 职场文书
医院标语大全
2014/06/23 职场文书
争先创优活动总结
2014/08/27 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
辞职信的写法
2015/02/27 职场文书
留学推荐信中文范文
2015/03/26 职场文书
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python