Php excel : problème de temps d'exécution [Résolu]

Messages postés
2
Date d'inscription
lundi 28 septembre 2009
Dernière intervention
20 janvier 2011
- - Dernière réponse : cs_jaymee
Messages postés
2
Date d'inscription
lundi 28 septembre 2009
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
2
Date d'inscription
lundi 28 septembre 2009
Dernière intervention
20 janvier 2011
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_jaymee

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.