Une boucle d'attente tant qu'1 fichier existe
fdu
-
fdu -
fdu -
Bonjour,
J'ai un traitement qui modifie le contenu d'un fichier et une fois ce traitement terminé réaffiche une page qui lit ce même fichier pour en afficher un compte rendu.
Le problème est que parfois le traitement est un peu long et le réaffichage ne me donne pas la réalité du fichier. J'ai donc ajouté une boucle d'attente en testant l'existence du fichier. Seulement elle ne détecte pas que le fichier n'existe plus et continue indéfiniment de boucler !
Voici le code :
$fd1 = fopen($_REQUEST['repertoire'].$_REQUEST['fichier'],"r");
$fd2 = fopen($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP","w");
while ($buffer = fgets($fd1)) {
if (substr($buffer,0,4) == "0602") {
fwrite($fd2,substr($buffer,0,118).sprintf("%-31s",strtoupper($_REQUEST['newlibelle'])).substr($buffer,- 13));
} else {
fwrite($fd2,$buffer);
}
}
fclose ($fd1);
fclose ($fd2);
copy ($_REQUEST['repertoire'].$_REQUEST['fichier'],$_REQUEST['repertoire'].$_REQUEST['fichier'].".COPIE.".$horodate);
unlink($_REQUEST['repertoire'].$_REQUEST['fichier']);
copy ($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP",$_REQUEST['repertoire'].$_REQUEST['fichier']);
unlink($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP");
majrefresh(strtoupper($_REQUEST['newlibelle']),"",strtoupper($_REQUEST['repertoire']),strtoupper($_REQUEST['fichier']));
while (file_exists($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP")) {
echo $_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP1 ";
echo "le fichier est présent<br>";
}
echo "le fichier est absent<br>";
echo "<script type=\"text/javascript\">";
echo "javascript:opener.location.reload();";
echo "javascript:self.close();";
echo "</script>";
Quelqu'un pourrait-il me dire ce qui ne marche pas ?
J'ai un traitement qui modifie le contenu d'un fichier et une fois ce traitement terminé réaffiche une page qui lit ce même fichier pour en afficher un compte rendu.
Le problème est que parfois le traitement est un peu long et le réaffichage ne me donne pas la réalité du fichier. J'ai donc ajouté une boucle d'attente en testant l'existence du fichier. Seulement elle ne détecte pas que le fichier n'existe plus et continue indéfiniment de boucler !
Voici le code :
$fd1 = fopen($_REQUEST['repertoire'].$_REQUEST['fichier'],"r");
$fd2 = fopen($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP","w");
while ($buffer = fgets($fd1)) {
if (substr($buffer,0,4) == "0602") {
fwrite($fd2,substr($buffer,0,118).sprintf("%-31s",strtoupper($_REQUEST['newlibelle'])).substr($buffer,- 13));
} else {
fwrite($fd2,$buffer);
}
}
fclose ($fd1);
fclose ($fd2);
copy ($_REQUEST['repertoire'].$_REQUEST['fichier'],$_REQUEST['repertoire'].$_REQUEST['fichier'].".COPIE.".$horodate);
unlink($_REQUEST['repertoire'].$_REQUEST['fichier']);
copy ($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP",$_REQUEST['repertoire'].$_REQUEST['fichier']);
unlink($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP");
majrefresh(strtoupper($_REQUEST['newlibelle']),"",strtoupper($_REQUEST['repertoire']),strtoupper($_REQUEST['fichier']));
while (file_exists($_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP")) {
echo $_REQUEST['repertoire'].$_REQUEST['fichier'].".TEMP1 ";
echo "le fichier est présent<br>";
}
echo "le fichier est absent<br>";
echo "<script type=\"text/javascript\">";
echo "javascript:opener.location.reload();";
echo "javascript:self.close();";
echo "</script>";
Quelqu'un pourrait-il me dire ce qui ne marche pas ?
A voir également:
- Une boucle d'attente tant qu'1 fichier existe
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
Merci de ta réponse mais le problème subsiste toujours avec is_file.