Maison développement back-end tutoriel 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来导出数据,上面方法简单给了个流程,具体你自己补充!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Développement PHP : utilisez PHPExcel pour traiter des fichiers Excel Développement PHP : utilisez PHPExcel pour traiter des fichiers Excel Jun 15, 2023 pm 03:45 PM

Avec l’avènement de l’ère numérique, les données sont devenues l’élément le plus important de notre vie quotidienne et de notre travail, et les fichiers Excel sont devenus l’un des outils importants pour le traitement des données. Je pense que de nombreux développeurs PHP seront souvent confrontés à l'utilisation de fichiers Excel pour le traitement des données et les opérations au travail. Cet article vous présentera les méthodes et précautions d'utilisation de la bibliothèque PHPExcel pour traiter les fichiers Excel. Qu’est-ce que PHPExcel ? PHPExcel est une classe PHP

Guide complet : Comment traiter des fichiers Excel à l'aide de l'extension php PHPExcel Guide complet : Comment traiter des fichiers Excel à l'aide de l'extension php PHPExcel Jul 28, 2023 pm 10:01 PM

Guide complet : Comment traiter des fichiers Excel à l'aide de l'extension PHP PHPExcel Introduction : Les fichiers Excel sont souvent utilisés comme format courant pour le stockage et l'échange de données lors du traitement de grandes quantités de données et de l'analyse statistique. En utilisant l'extension PHP PHPExcel, nous pouvons facilement lire, écrire et modifier des fichiers Excel pour traiter efficacement les données Excel. Cet article explique comment utiliser l'extension PHP PHPExcel pour traiter des fichiers Excel et fournit des exemples de code. 1. Installez PHPExc

Quelle est la différence entre un débordement de mémoire et une fuite de mémoire ? Quelle est la différence entre un débordement de mémoire et une fuite de mémoire ? Aug 21, 2023 pm 03:14 PM

La différence entre le dépassement de mémoire et la fuite de mémoire est que le dépassement de mémoire signifie que le programme ne peut pas obtenir l'espace mémoire requis lors de la demande de mémoire, tandis que la fuite de mémoire signifie que la mémoire allouée par le programme pendant l'exécution ne peut pas être libérée normalement. Un dépassement de mémoire est généralement dû. aux besoins du programme. La mémoire dépasse la limite de mémoire disponible, ou des appels récursifs entraînent un épuisement de l'espace de la pile, ou des fuites de mémoire sont causées par une mémoire allouée dynamiquement non libérée dans le programme, des références d'objet qui ne sont pas libérées correctement ou des références circulaires. . de.

Quelle est la différence entre une fuite de mémoire et un débordement de mémoire ? Quelle est la différence entre une fuite de mémoire et un débordement de mémoire ? Dec 03, 2020 pm 05:22 PM

Différence : un dépassement de mémoire signifie que lorsque le programme demande de la mémoire, il n'y a pas assez d'espace mémoire à utiliser et le système ne peut plus allouer l'espace dont vous avez besoin. Une fuite de mémoire signifie que le programme ne peut pas libérer l'espace mémoire appliqué après l'application ; pour la mémoire, les dommages causés par une fuite de mémoire peuvent être ignorés, mais trop de fuites de mémoire entraîneront un débordement de mémoire.

Comment utiliser phpexcel pour convertir des fichiers Excel en fichiers CSV et les ouvrir Comment utiliser phpexcel pour convertir des fichiers Excel en fichiers CSV et les ouvrir Mar 27, 2023 pm 04:16 PM

PHPEXCEL est une excellente bibliothèque de classes PHP pour lire et écrire des fichiers Excel. Elle fournit une API très suffisante qui nous permet d'utiliser PHP pour lire et écrire des fichiers Excel. Parfois, nous devons convertir des fichiers Excel en fichiers CSV pour les utiliser à certaines occasions. Ainsi, cet article décrit principalement comment utiliser la bibliothèque de classes PHPEXCEL pour convertir des fichiers Excel en fichiers CSV et les ouvrir.

Comment résoudre le problème de débordement de mémoire dans le développement PHP Comment résoudre le problème de débordement de mémoire dans le développement PHP Oct 11, 2023 am 09:13 AM

Comment résoudre le problème de débordement de mémoire dans le développement PHP nécessite des exemples de code spécifiques. Comme PHP est de plus en plus largement utilisé, le problème de débordement de mémoire dans le développement PHP est devenu un défi courant auquel sont confrontés les développeurs. Le dépassement de mémoire fait référence à une situation dans laquelle la mémoire demandée par un programme dépasse la limite d'espace mémoire pendant le fonctionnement, entraînant une exception ou un crash du programme. Cet article explique comment résoudre le problème de débordement de mémoire dans le développement PHP et fournit des exemples de code spécifiques. Optimiser la structure du code Tout d'abord, nous devons optimiser la structure du code. Un simple et de haut niveau

Erreur Java : erreur de dépassement de mémoire JVM, comment gérer et éviter Erreur Java : erreur de dépassement de mémoire JVM, comment gérer et éviter Jun 24, 2023 pm 02:19 PM

Java est un langage de programmation populaire lors du développement d'applications Java, vous pouvez rencontrer des erreurs de dépassement de mémoire JVM. Cette erreur provoque généralement le crash de l'application, affectant l'expérience utilisateur. Cet article explorera les causes des erreurs de dépassement de mémoire JVM et comment gérer et éviter de telles erreurs. Qu’est-ce qu’une erreur de débordement de mémoire JVM ? La machine virtuelle Java (JVM) est l'environnement d'exécution des applications Java. Dans la JVM, la mémoire est divisée en plusieurs zones, notamment le tas, la zone de méthode, la pile, etc. Le tas est utilisé pour stocker les objets créés

Comment réparer : erreur de performances Java : dépassement de mémoire Comment réparer : erreur de performances Java : dépassement de mémoire Aug 19, 2023 am 11:05 AM

Comment résoudre : Erreur de performances Java : Débordement de mémoire Introduction : Le débordement de mémoire (OutofMemoryError) est l'un des problèmes de performances courants en Java. Une erreur de dépassement de mémoire se produit lorsque la mémoire requise par un programme dépasse l'espace mémoire fourni par la machine virtuelle. Cet article présentera quelques méthodes courantes pour résoudre les erreurs de dépassement de mémoire et fournira des exemples de code correspondants. 1. Causes des erreurs de dépassement de mémoire 1.1 Trop d'objets sont créés En Java, chaque objet occupe une certaine quantité d'espace mémoire. Si Cheng

See all articles