cs_jaymee
Messages postés2Date d'inscriptionlundi 28 septembre 2009StatutMembreDernière intervention20 janvier 2011
-
18 janv. 2011 à 11:33
cs_jaymee
Messages postés2Date d'inscriptionlundi 28 septembre 2009StatutMembreDernière intervention20 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.
cs_jaymee
Messages postés2Date d'inscriptionlundi 28 septembre 2009StatutMembreDernière intervention20 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