Boucle while(!feof($fichier)) infinie

Résolu/Fermé
christian820 Messages postés 12 Date d'inscription lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 - 22 août 2012 à 11:43
christian820 Messages postés 12 Date d'inscription lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 - 22 août 2012 à 13:43
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
22 août 2012 à 12:04
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 4313 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 845
22 août 2012 à 12:04
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 lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
22 août 2012 à 13:43
Bonjour Mihawk
Ben, c'était bien le problème.
Merci pout ta réponse
Christian
0
christian820 Messages postés 12 Date d'inscription lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
22 août 2012 à 13:41
Bonjour Zep3k!Gno,
Mais c'est bien sûr!
Ca fonctionne!
Merci pour tes conseils
0