首頁 後端開發 php教程 phpExcel导出大量数据出现内存溢出错误的解决方法_PHP

phpExcel导出大量数据出现内存溢出错误的解决方法_PHP

Jun 01, 2016 pm 12:07 PM
phpexcel 記憶體溢出

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来分批导出,不用每次刷新页面。

 复制代码 代码如下:
export to Excel
$('#export').click(function() { 
    $.ajax({ 
        url: "export.php",  
        data: getData(),  //这个地方你也可以在php里获取,一般读数据库 
        success: function(response){ 
            window.location.href = response.url; 
        } 
    }) 
});

复制代码 代码如下:
//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来导出数据,上面方法简单给了个流程,具体你自己补充!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP開發:使用 PHPExcel 處理 Excel 文件 PHP開發:使用 PHPExcel 處理 Excel 文件 Jun 15, 2023 pm 03:45 PM

PHP開發:使用 PHPExcel 處理 Excel 文件

完全指南:如何使用php擴充PHPExcel處理Excel文件 完全指南:如何使用php擴充PHPExcel處理Excel文件 Jul 28, 2023 pm 10:01 PM

完全指南:如何使用php擴充PHPExcel處理Excel文件

記憶體溢出和記憶體洩漏有什麼區別 記憶體溢出和記憶體洩漏有什麼區別 Aug 21, 2023 pm 03:14 PM

記憶體溢出和記憶體洩漏有什麼區別

內存洩漏和內存溢出的區別是什麼 內存洩漏和內存溢出的區別是什麼 Dec 03, 2020 pm 05:22 PM

內存洩漏和內存溢出的區別是什麼

怎麼用phpexcel將Excel檔案轉成CSV檔案並打開 怎麼用phpexcel將Excel檔案轉成CSV檔案並打開 Mar 27, 2023 pm 04:16 PM

怎麼用phpexcel將Excel檔案轉成CSV檔案並打開

如何解決PHP開發中的記憶體溢位問題 如何解決PHP開發中的記憶體溢位問題 Oct 11, 2023 am 09:13 AM

如何解決PHP開發中的記憶體溢位問題

Java錯誤:JVM記憶體溢位錯誤,如何處理與避免 Java錯誤:JVM記憶體溢位錯誤,如何處理與避免 Jun 24, 2023 pm 02:19 PM

Java錯誤:JVM記憶體溢位錯誤,如何處理與避免

php如何使用PHPExcel處理Excel檔案? php如何使用PHPExcel處理Excel檔案? Jun 01, 2023 pm 02:01 PM

php如何使用PHPExcel處理Excel檔案?

See all articles