J'ai un script Php qui utilise la biblothèque reader.php qui permet de traiter des fichiers xls.
Mon problème, c'est que je dois traiter de très lours fichiers xls, et lors de mon script, j'ai l'erreur "Fatal error: Allowed memory size of 13631488 bytes exhausted (tried to allocate 35 bytes) in C:\wamp\www\Excel\reader.php on line 1008".
Or, dans mon fichier "php.ini" j'ai affecté 32M à memory_limit (car je pense que c'est le maximum que je peux affecter), et, pour être sûr, en début de script, je fais Code : ini_set('memory_limit','32M');.
Pour info, voici mon script (qui est en cours de création, donc je ne fais que charger mon xls sans encore le traiter) :
<?php ini_set('memory_limit','32M'); //Pour le traitement du fichier xls qui peut être très lourd session_start(); include_once("../fichiersInclusion/classes.php" Include("../../Excel/reader.php" //Chargement de la librairie
$campagne = new CCampagne($tab); $resultat = $campagne->enregCampagne('enreg');
if($resultat == "Enregistrement effectué" { //Traitement du fichier xls (mise-à-jour des des tables cibles et contacts) $data = new Spreadsheet_Excel_Reader();// Instanciation de la class permettant la lecture du fichier excel $data->setOutputEncoding('utf-8');// Définition du type d’encodage de caractère à utiliser pour la sortie (ce qui va être affiché à l’écran) $data->read($chemin_destination);// Chargement du fichier excel à lire
header("Location:../interfaces/interface.php?fichier=../fichiersInclusion/interfacesCampagnes/" . addslashes($tab['nomFichier']) . "&titre=Questionnaire" } else header("Location:../interfaces/interface.php?fichier=../fichiersInclusion/creatForm/erreurEnregCampagne.inc&titre=Erreur" } else echo "<font color='red'>Impossible de créer l'interface du questionnaire</font>"; } } else echo "<font color='red'>Le fichier des client-cibles n'a pas pu être enregistré</font>"; ?>
Quelqu'un pourrait m'indiquer ce que je dois configurer pour que ça passe?
Merci beaucoup pour l'intérêt que tu portes à mon problème.
Comme indiqué, j'avais fait le changement dans le php.ini aussi. Suite à tes conseils, j'ai commenté ini_set('memory_limit','32M'); , modifié la valeur de memory_limit en 48M et j'ai relancé wamp. J'ai même essayé avec 126M et 512M, mais rien y fait.
Par contre, si je travaille avec un fichier de moins de 2Mo (j'ai essayé avec un de 1.80 Mo), ça passe.
Dans php.ini vous pouvez affecter beaucoup plus que 32M, mais il faut bien avoir présent à l'esprit que ces allocations mémoire seront valables en local mais qu'un éventuel hébergeur ne vous permettra pas (Sauf coût plus élevé) de modifier la quantité mémoire allouée.
Désolé, connerie de ma part : les affres du copier-coller. J'avais copié un fichier de classes provenant d'un précédent projet que j'avais réalisé et dans lequel traînait un "ini_set("memory_limit",'13M');".
bonjour tout le monde j'ai le meme probleme de mémoire comme dubithoph j'ai un script pour le traitement de fichier excel le probleme est que la memoire demandé par le script depasse la taille actuelle de mon pc (1GB ) j'ai fait les configuration necessaires 'memory limit 1000 MB' et meme quandsj'ai lu lemanuel de la bibliotheque PHPExcel et j'ai trouvé le paragraph suivant :
When using cache_to_discISAM all cells are held in a temporary disk file, with only an index to their location in that file maintained in PHP memory. This is slower than any of the cache_in_memory methods, but significantly reduces the memory footprint. The temporary disk file is automatically deleted when your script terminates.
le manuel site plusieurs methodes pour enregistrer les cell du fichier excel traite en fichier temporair au disque,dans un tableau php ...
mais que dalle le scripte tourne jusqu'a ce que la memoire soit satture puis s'arrete en affichant le fameux 'memory limit'
Vous utilisez une librairie qui n'existe pas de base dans Wampserver. Il faudrait voir avec le concepteur de cette librairie. Vous comprendrez aisément que l'on ne peut pas faire des essais avec toutes les librairies PHP de la planète.