ホームページ バックエンド開発 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

完全ガイド: PHP 拡張機能 PHPExcel を使用して Excel ファイルを処理する方法 完全ガイド: PHP 拡張機能 PHPExcel を使用して Excel ファイルを処理する方法 Jul 28, 2023 pm 10:01 PM

完全ガイド: PHP 拡張機能 PHPExcel を使用して Excel ファイルを処理する方法 はじめに: Excel ファイルは、大量のデータや統計分析を処理する際のデータの保存と交換のための一般的な形式としてよく使用されます。 PHP 拡張機能 PHPExcel を使用すると、Excel ファイルの読み取り、書き込み、変更を簡単に行うことができ、Excel データを効果的に処理できます。この記事では、PHP 拡張機能 PHPExcel を使用して Excel ファイルを処理する方法とコード例を紹介します。 1.PHPExcをインストールする

PHP 開発: PHPExcel を使用して Excel ファイルを処理する PHP 開発: PHPExcel を使用して Excel ファイルを処理する Jun 15, 2023 pm 03:45 PM

デジタル時代の到来により、データは私たちの日常生活や仕事において最も重要な部分となり、Excel ファイルはデータ処理のための重要なツールの 1 つになりました。 PHP開発者の多くは仕事でデータ処理や操作でExcelファイルを使用する場面に遭遇することが多いと思います。この記事では、PHPExcelライブラリを使ってExcelファイルを加工する方法と注意点を紹介します。 PHPエクセルとは何ですか? PHPExcel は PHP クラスです

メモリ オーバーフローとメモリ リークの違いは何ですか? メモリ オーバーフローとメモリ リークの違いは何ですか? 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 ファイルの読み書きのための優れた PHP クラス ライブラリであり、PHP を使用して Excel ファイルを読み書きできるようにする非常に十分な API を提供します。場合によっては、Excel ファイルを CSV ファイルに変換して使用する必要があることがあります。そこで、この記事ではPHPEXCELクラスライブラリを使ってExcelファイルをCSVファイルに変換して開く方法を中心に説明します。

PHP開発におけるメモリオーバーフローの問題を解決する方法 PHP開発におけるメモリオーバーフローの問題を解決する方法 Oct 11, 2023 am 09:13 AM

PHP 開発におけるメモリ オーバーフローの問題を解決するには、具体的なコード サンプルが必要です。PHP がますます広く使用されるようになるにつれて、PHP 開発におけるメモリ オーバーフローの問題も開発者が直面する共通の課題になりました。メモリ オーバーフローとは、プログラムが要求するメモリが動作中にメモリ領域の制限を超え、その結果、プログラムで例外またはクラッシュが発生する状況を指します。この記事では、PHP 開発におけるメモリ オーバーフローの問題を解決する方法と、いくつかの具体的なコード例を紹介します。コード構造の最適化 まず、コード構造を最適化する必要があります。シンプルかつハイレベルな

Java エラー: JVM メモリ オーバーフロー エラー、対処方法と回避方法 Java エラー: JVM メモリ オーバーフロー エラー、対処方法と回避方法 Jun 24, 2023 pm 02:19 PM

Java は人気のあるプログラミング言語ですが、Java アプリケーションの開発中に、JVM メモリ オーバーフロー エラーが発生する場合があります。通常、このエラーによりアプリケーションがクラッシュし、ユーザー エクスペリエンスに影響を与えます。この記事では、JVM メモリ オーバーフロー エラーの原因と、そのようなエラーに対処および回避する方法について説明します。 JVMメモリオーバーフローエラーとは何ですか? Java 仮想マシン (JVM) は、Java アプリケーションの実行環境です。 JVM では、メモリはヒープ、メソッド領域、スタックなどの複数の領域に分割されます。ヒープは作成されたオブジェクトを保存するために使用されます

修正方法: Java パフォーマンス エラー: メモリ オーバーフロー 修正方法: Java パフォーマンス エラー: メモリ オーバーフロー Aug 19, 2023 am 11:05 AM

解決方法: Java パフォーマンス エラー: メモリ オーバーフロー はじめに: メモリ オーバーフロー (OutofMemoryError) は、Java の一般的なパフォーマンス問題の 1 つです。メモリ オーバーフロー エラーは、プログラムが必要とするメモリが仮想マシンによって提供されるメモリ領域を超えると発生します。この記事では、メモリ オーバーフロー エラーを解決するための一般的な方法をいくつか紹介し、対応するコード例を示します。 1. メモリオーバーフローエラーの原因 1.1 作成されるオブジェクトが多すぎる Java では、各オブジェクトが一定量のメモリ空間を占有します。チェンの場合

See all articles