Boucle while(!feof($fichier)) infinie

Résolu
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
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 2025 Date d'inscription   Statut Membre Dernière intervention   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 4315 Date d'inscription   Statut Contributeur Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Mihawk
Ben, c'était bien le problème.
Merci pout ta réponse
Christian
0
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Zep3k!Gno,
Mais c'est bien sûr!
Ca fonctionne!
Merci pour tes conseils
0