Maison > développement back-end > tutoriel php > Comment puis-je charger efficacement des fichiers Excel volumineux dans PHPExcel sans manquer de mémoire ?

Comment puis-je charger efficacement des fichiers Excel volumineux dans PHPExcel sans manquer de mémoire ?

Susan Sarandon
Libérer: 2024-11-24 06:53:19
original
623 Les gens l'ont consulté

How Can I Efficiently Load Large Excel Files into PHPExcel Without Running Out of Memory?

Problèmes de mémoire insuffisante avec PHPExcel

Le chargement de grands tableaux Excel à l'aide de PHPExcel peut entraîner un épuisement de la mémoire, malgré une allocation de mémoire généreuse. Comprendre le processus d'allocation de mémoire est crucial pour résoudre ce problème.

Facteurs affectant la consommation de mémoire

Les besoins en mémoire de PHPExcel dépendent principalement du nombre de cellules dans les feuilles de calcul chargées . L'utilisation moyenne de la mémoire est d'environ 1 Ko par cellule. Par conséquent, un classeur contenant 5 millions de cellules nécessiterait environ 5 Go de mémoire.

Optimisations

Pour atténuer la consommation de mémoire, plusieurs optimisations peuvent être mises en œuvre :

  • Limitation des feuilles de calcul chargées : Chargez uniquement des feuilles de calcul spécifiques en utilisant setLoadSheetsOnly().
  • Filtres de lecture : Implémentez un filtre de lecture pour sélectionner uniquement les cellules nécessaires.
  • Lecture en morceaux : Chargez le classeur dans itérations pour conserver uniquement un nombre défini de lignes en mémoire à la fois.
  • Lire les données Uniquement : Chargez uniquement les valeurs des cellules sans formatage à l'aide de setReadDataOnly(true).
  • Cell Caching : Stockez les cellules dans un format compressé ou en dehors de la mémoire de PHP pour réduire l'empreinte mémoire.

Conseils supplémentaires

Dans votre code, le Le tableau $arrayData accumule des données, ce qui peut potentiellement exacerber l'utilisation de la mémoire. Pensez plutôt à utiliser la méthode toArray() de PHPExcel ou sa nouvelle méthode rangeToArray(), qui peut créer un tableau associatif des données sans avoir besoin du tableau intermédiaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal