Bonjour,

J'utilise le script suivant pour lister des fichiers Excel, et du PHPExcel pour recueillir des informations enregistrées dans chaque fichier.
Le scrit fonctionne bien si je n'utilise pas la lecture des fichiers Excel, dès que j'intègre la lecture je recontre un problème de mémoire dès le troisième ou quatrième fichier.
Si dessous mon script et le message d'erreur. Quelqu'un aurait-il une idée pour vider la mémoire entre chaque lecture de fichier avec PHPExcel ?

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
58
59
60
61
62
63
<?php
 
error_reporting(E_ALL);
 
date_default_timezone_set('Europe/London');
include '../Classes/PHPExcel/Reader/Excel5.php';
require_once '../Classes/PHPExcel/IOFactory.php';
 
echo "<br><h1><center><font color=\"red\"> Liste des Devis sauvegardés </font></h1></br>" ;
$dirname = '../GestionClients/SaveDevis/';
$dir = opendir($dirname);
while (false !== ($file = readdir($dir))) {
    $files[] = $file;
}
rsort($files);
foreach ($files as $fichier)
{
	if ((substr($fichier, -4) == ".xls") OR (substr($fichier, -5) == ".xlsm")) { 
	$AnFichier = (substr($fichier, 10, 2));
	$MoisFichier = (substr($fichier, 12, 2));
	$JourFichier = (substr($fichier, 14, 2));
	$HeureJ = (substr($fichier, 16, 2));
	$MinuteJ = (substr($fichier, 18, 2));
	$RefDevis = (substr($fichier, 0, 9));
 
		// On charge lit le fichier Excel
		$objPHPExcel = PHPExcel_IOFactory::load($dirname.$fichier);
 
		// On retire la protection des feuilles pour lire le fichier
		$objPHPExcel->getSecurity()->setLockWindows(true);
		$objPHPExcel->getSecurity()->setLockStructure(true);
		$objPHPExcel->getSecurity()->setWorkbookPassword("bercois");
		$objPHPExcel->getActiveSheet()->getProtection()->setPassword("bercois");
 
		// On active la première page correspondant au devis
		$sheet=$objPHPExcel->getSheet(0);
 
		// On regarde l'état d'avancement: devis, commande ou facture
		$valCellEtat=$sheet->getCell('A5')->getValue();
		If ($valCellEtat=="")
			{$EtatDocument="Devis";}
			else {$EtatDocument="Commande";}
		//et on recupere avec la methode getCell le contenue de la cellule E13
		$valCellGenre=$sheet->getCell('B11')->getValue();
		$valCellNom=$sheet->getCell('B12')->getValue();
		$valCellPrenom=$sheet->getCell('B13')->getValue();
		// On regarde la page commande pour voir si elle est passée à l'état facture
		$sheet=$objPHPExcel->getSheet(1);
		$valCellEtat=$sheet->getCell('A5')->getValue();
		If ($valCellEtat=="")
			{}
			else {$EtatDocument="Facture";}
 
?>
		<table bgcolor=#F5F5DC border="1" bordercolor=green width="90%" align="center"><tr><td valign="top"></tr>
			<tr><td></td></tr>
			<tr><td bgcolor="#CCFFCC" height="5" width="100"><font size="2" face="Arial, Helvetica, sans-serif" color="black"><?php echo '<br><a href="'.$dirname.$fichier.'">'.$RefDevis.'</a></br>'?></td>
			<td><?php echo $EtatDocument." Affaire : ".$valCellGenre." ".$valCellPrenom." ".$valCellNom." - Fichier du ".$JourFichier."/".$MoisFichier."/".$AnFichier." à ".$HeureJ."H".$MinuteJ ?></font></td></tr>
			<?php
 
	}
}
?>
Et le message d'erreur :

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 78 bytes) .....

Merci de votre aide.