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 -
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
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
A voir également:
- Boucle while batch
- Fichier batch - Guide
- Batch pause 10 secondes ✓ - Forum Programmation
- Batch converter - Télécharger - Photo & Graphisme
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Batch renommer une partie du nom de plusieurs fichiers ✓ - Forum Autoit / batch
3 réponses
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
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