Php excel : problème de temps d'exécution

Résolu
cs_jaymee
Messages postés
2
Date d'inscription
lundi 28 septembre 2009
Statut
Membre
Dernière intervention
20 janvier 2011
- 18 janv. 2011 à 11:33
cs_jaymee
Messages postés
2
Date d'inscription
lundi 28 septembre 2009
Statut
Membre
Dernière intervention
20 janvier 2011
- 20 janv. 2011 à 17:09
bonjour à tous!

j'ai un problème avec mon script php. il a pour but de traiter une feuille excel(xls). quand on l'éxécute il affiche le message d'erreur suivant :

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\xpolaire\treatxls.php on line 150


a noter que lorsque la feuille n'est pas trop grande le résultat est satisfaisant
en fait à cette ligne il y a une boucle foreach. voici le code :

<?php
// chargement de la librairie
include ('excel/reader.php');

// instanciation de la classe permettant la lecture du fichier excel
$data = new Spreadsheet_Excel_Reader();

// definition du type d'encodage de caractère à utiliser pour l'affichage à l'écran
// ici on utilise l'encodage de Windows
$data->setOutputEncoding('CP1251');

// chargement du fichier excel à lire
$data->read('dir_xls/taf1.xls');

/* *****TEST********
echo $data->sheets[0]['numRows']; // donne le nombre de lignes 
echo "";
echo $nom = $data->sheets[0];
echo $data->sheets[0]['cells'][$i][$j] ;	//retourne le contenu de la cellule $i$j
//echo $data->sheets[0]['cellsInfo'][5][5];  // retourne des informations sur la cellule (ex. cellule non-vide revoi "Array"
*/
error_reporting(E_ALL ^ E_NOTICE);

// fonction pour trouver les éléments réguliers de la colonne-2 de ma feuille excel
function regular($secteur, $data){ 
$an_entr = array(); // tableau qui contient les correspondances entre col-1 et col-2
$entr = array(array());	//tableau contenant tous éléments de la col-2
$tab_regular = array();	//tableau contenant les éléments réguliers
        //$secteur correspond au numéro de la feuille. ce num va de 0 à N

for ($i=2; $i<=($data->sheets[$secteur]['numRows']); $i++)
{
$an = $data->sheets[$secteur]['cells'][$i][1];
$entreprise = $data->sheets[$secteur]['cells'][$i][2];
$entr[] = $entreprise;
$an_entr[$j][$an]=$entreprise;
$j++;

}
$entr = array_unique($entr);
for ($i=0; $i<count($entr); $i++)
{
$count = 0; $j=0; $k=3;
while($j<count($an_entr))
{
                 /***************VOICI LA BOUCLE A PROBLEME*****************************/

foreach($an_entr[$j] as $key => $val) //VOICI LA BOUCLE A PROBLEME
{
if($val==$entr[$i])
{
$count++; // compter le nombre d'occurences d'un élément de la col-2
}
}
               /*******************************FIN DE LA BOUCLE*********************/
$j++;

}


if($count==4)
{
$tab_regular[] = $entr[$i];
}
}

print_r($tab_regular); 

}
regular(2, $data); //appel de la fonction
?>


NOTE :
[*] j'utilise la librairie ExcelReader.php
[*] j'ai déja augmenté la valeur de "max_execution_time" dans php.ini.

j'aimerais comprendre pourquoi ça coince

1 réponse

cs_jaymee
Messages postés
2
Date d'inscription
lundi 28 septembre 2009
Statut
Membre
Dernière intervention
20 janvier 2011

20 janv. 2011 à 17:09
J'ai enfin résolu mon problème. augmenté la valeur de "max_execution_time" dans php.ini ne suffisait pas. j'ai également augmenté celle de "max_input_time" et sans oublier de redémarrer le serveur web (Apache) après chaque modif de php.ini
3