Boucle while(!feof($fichier)) infinie

Résolu
christian820 Messages postés 12 Statut Membre -  
christian820 Messages postés 12 Statut Membre -
Bonjour,

Je bloque depuis hier sur un problème lié semble-t-il à une boucle while infinie. J'ai le message suivant qui s'affiche :
Fatal error: Maximum execution time of 60 seconds exceeded in C:\wamp\www\Chrisvia\www\GFH\InsereActes.php on line 140

voici mon code.

$file=$_POST["actes"];
if (file_exists($file))
{
$lecture = fopen($file,"r");
$ligne=fgets($lecture, 4096);

while (!feof($lecture))
{
$champ=explode("\t",$ligne);

$id_actes=$champ[0];
$id_actes="null";


$TypeActe=$champ[1];
if ($TypeActe=="")
{
$TypeActe="NULL";
}
$TypeActe=addslashes($TypeActe);

$DateActe=$champ[2];
if ($DateActe=="")
{
$DateActe="NULL";
}
$DateActe=addslashes($DateActe);

-----------------------------------------------------------------------------------------------

$PrenomMereConjoint=$champ[25];
if ($PrenomMereConjoint=="")
{
$PrenomMereConjoint="NULL";
}
$PrenomMereConjoint=addslashes($PrenomMereConjoint);

$PhotoActe=$champ[26];
if ($PhotoActe=="")
{
$PhotoActe="NULL";
}
$PhotoActe=addslashes($PhotoActe);

}


$requete="INSERT INTO actes(id_actes, TypeActe, DateActe, .......... PrenomMereConjoint, PhotoActe) value('$TypeActe','$DateActe', ..................'$PrenomMereConjoint','$PhotoActe')";



Ce code permet de récupérer les données situées dans un fichier texte envoyé par une autre page du site, et d'inclure ces données dans une table mysql.

Merci de votre aide

Christian

3 réponses

Zep3k!GnO Messages postés 2049 Statut Membre 200
 
Le problème vient bien de ta boucle, dans la condition de ton while tu testes si tu arrives a la fin du fichier, mais dans ton while (à l'intérieur de la boucle) tu ne lis pas d'octets, donc le pointeur dans le fichier n'avance pas et ca boucle a l'infini, il faut que tu places ton fgets dans ta boucle.

Puis sinon avec le fgets, tu n'es pas obligé de passer par un feof pour tester la condition de sortie, voir l'exemple : https://www.php.net/manual/fr/function.fgets.php
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Salut,

Je ne suis pas un cador de la lecture de fichier en PHP mais je me demande où ton while sait qu'il doit passer à la ligne suivante...?
0
christian820 Messages postés 12 Statut Membre 1
 
Bonjour Mihawk
Ben, c'était bien le problème.
Merci pout ta réponse
Christian
0
christian820 Messages postés 12 Statut Membre 1
 
Bonjour Zep3k!Gno,
Mais c'est bien sûr!
Ca fonctionne!
Merci pour tes conseils
0