ホームページ >バックエンド開発 >PHPチュートリアル >phpExcel が大量のデータをエクスポートする場合のメモリ オーバーフロー エラーの解決策_PHP チュートリアル

phpExcel が大量のデータをエクスポートする場合のメモリ オーバーフロー エラーの解決策_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:13:08775ブラウズ

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',
'me mcacheポート' => 11211 、
'cachetime'

その他の方法


最初の方法では、複数の Excel ファイルを生成する必要はありません。データの合計量に基づいて各シートがエクスポートする行数を計算します。以下は、PHPExcel が複数のシートを生成する方法です。
以下は、PHPExcel が複数のシートを生成する方法です:

コードをコピーします

コードは次のとおりです:

$sheet = $objPHPExcel->getActiveSheet();

$sheet->setCellValue('A1',$x); >setCellValue( 'B1',$y);

2 番目の方法では、毎回ページを更新せずに、ajax をバッチでエクスポートすることを検討できます。

コードをコピーします

コードは次のとおりです:
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');
?>



データの量が大きい場合は、2 番目の方法である ajax を使用してデータをエクスポートすることをお勧めします。上記の方法は単に処理を提供するだけであり、詳細を自分で追加できます。

http://www.bkjia.com/PHPjc/326554.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326554.html技術記事 phpExcel は、読み取ったセル情報をメモリに保存します。次のようにコードをコピーすることで、さまざまなキャッシュ メソッドを設定できます: PHPExcel_Settings::setCacheStorageMethod()。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。