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下检测字符串是否是utf8编码的代码
Jun 28 PHP
php session 检测和注销
Mar 16 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
php的POSIX 函数以及进程测试的深入分析
Jun 03 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
php 的多进程操作实践案例分析
Feb 28 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
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python保存网页图片到本地的方法
2018/07/24 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python绘制彩虹图
2019/12/16 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
Python实现弹球小游戏
2020/08/01 Python
python中remove函数的踩坑记录
2021/01/04 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
2014新年元旦活动策划方案
2014/02/18 职场文书
三好生演讲稿
2014/09/12 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电