Bonjour,
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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) :
Quelqu'un pourrait m'indiquer ce que je dois configurer pour que ça passe?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 <?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 header('Content-Type: text/html; charset=utf-8'); include_once("../fichiersInclusion/fonctionsPhp.inc"); if ($_FILES['fichierCibles']['error'] == UPLOAD_ERR_OK) { $chemin_destination = '../campagnes/fichierDerniereCampagne.xls'; if(move_uploaded_file($_FILES['fichierCibles']['tmp_name'], $chemin_destination)) { $tab['nomFichier'] = date("Y-m-d-H-i-s") . '.inc'; if($file = fopen ("../fichiersInclusion/interfacesCampagnes/". $tab['nomFichier'], "a+")) { fwrite($file, $_SESSION['code']); fclose($file); if(!empty($_POST['nom'])) $tab["nom"] = $_POST['nom']; if(!empty($_POST['accroche'])) $tab["accroche"] = $_POST['accroche']; if(!empty($_POST['dateDebut'])) $tab["dateDebut"] = $_POST['dateDebut']; if(!empty($_POST['dateFin'])) $tab["dateFin"] = $_POST['dateFin']; $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 dencodage 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>"; ?>
Pour info, mon fichier xls de test fait 5 Mo. Par contre, si j'essaie avec un fichier de 1.8 Mo, ça passe.
Merci d'avance
Partager