Comment puis-je optimiser l'utilisation de la mémoire de PHPExcel lors du chargement de gros fichiers XLSX ?

Susan Sarandon
Libérer: 2024-11-25 11:13:10
original
126 Les gens l'ont consulté

How Can I Optimize PHPExcel's Memory Usage When Loading Large XLSX Files?

Consommation de mémoire dans PHPExcel

Malgré la taille de fichier apparemment importante de la table XSLX (3 Mo), PHPExcel ne parvient pas à la charger en raison de mémoire insuffisante. Ce problème provient de la représentation « en mémoire » utilisée par PHPExcel pour les données de la feuille de calcul, ce qui la rend sensible aux limites de mémoire PHP.

Facteurs influençant l'utilisation de la mémoire

La taille physique du fichier n'a pas d'importance par rapport au nombre de cellules (lignes x colonnes) dans la feuille de calcul. En règle générale, environ 1 Ko de mémoire est requis par cellule. Ainsi, un classeur de 5 millions de cellules nécessiterait environ 5 Go de mémoire.

Techniques d'optimisation de la mémoire

Pour optimiser l'utilisation de la mémoire, plusieurs techniques peuvent être utilisées :

1. Limitation des feuilles de calcul :

Si plusieurs feuilles de calcul sont présentes mais que toutes ne sont pas nécessaires, utilisez la méthode setLoadSheetsOnly() pour spécifier quelles feuilles de calcul doivent être chargées.

2. Utilisation des filtres de lecture :

Définissez une classe de filtre de lecture implémentant PHPExcel_Reader_IReadFilter pour lire uniquement les cellules spécifiques d'intérêt, réduisant ainsi l'empreinte mémoire.

3. Lecture de morceaux :

Lisez le classeur par « morceaux » afin qu'un seul morceau soit chargé en mémoire à la fois à l'aide de filtres de lecture.

4. Définissez readDataOnly :

Activez cette option pour charger uniquement les valeurs des cellules, en ignorant les informations de formatage, ce qui peut réduire considérablement la consommation de mémoire.

5. Mise en cache des cellules :

Stockez les objets de cellule dans un format compressé ou en dehors de la mémoire de PHP pour minimiser la mémoire requise par cellule.

Problème potentiel dans le code

En plus de ces techniques d'optimisation, il convient de noter l'utilisation d'itérateurs dans votre code, qui peuvent être moins efficaces. Pensez plutôt à utiliser les méthodes toArray() ou rangeToArray() fournies par PHPExcel pour obtenir des tableaux de données cellulaires.

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