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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
用PHP制作的意见反馈表源码
Mar 11 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
php另类上传图片的方法(PHP用Socket上传图片)
Oct 30 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
PHP获取访问设备信息的方法示例
Feb 20 PHP
php+redis实现消息队列功能示例
Sep 19 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
终于听上了直流胆调频
2021/03/02 无线电
php 获取完整url地址
2008/12/20 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python中二分查找法的实现方法
2020/12/06 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
python如何实现递归转非递归
2021/02/25 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
化学学院毕业生自荐信范文
2013/12/17 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
入团申请书格式
2019/06/20 职场文书
Python简易开发之制作计算器
2022/04/28 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python