tekbright
Messages postés17Date d'inscriptionjeudi 7 avril 2005StatutMembreDernière intervention22 juin 2005
-
21 avril 2005 à 15:46
tekbright
Messages postés17Date d'inscriptionjeudi 7 avril 2005StatutMembreDernière intervention22 juin 2005
-
21 avril 2005 à 16:57
Bonjour,
J'ai fait un programme en php qui attend qu'un fichier soit fini d'etre construit :
L'algo se présente comme ceci : Je boucle tant que le fichier n'existe
pas, ensuite je prend deux foi sa taille a une seconde d'intervale, et
tant que ces tailles la ne sont pas les memes, je boucle. ( Je le force
a continuer quand les fichier sont de 0ko, car aparament lors de la
construction le systeme le laisse quelque temps a 0 ko.)
Pour débugger, je sauvegarde les valeurs dans un fichier texte ( test.txt )
echo "Fichier terminé : ". $taille1 ." et ". $taille2;
?>
Pour un fichier déja fini, cela marche parfaitement, mais pour un
fichier en cours de créations, cela boucle indéfiniment, $taille1 et
$taille2 prennant alors les valeurs 0 pérpetuellement.
Je ne sais pas si le probleme vient de mon algo ou d'autre chose.
Je travaille sous Windows 2000 pro.
Merci d'avance pour vos réponses !
( et si vous avez une autre solution ou idée pour attendre qu'un fichier soit généré, je suis preneur )
tekbright
Messages postés17Date d'inscriptionjeudi 7 avril 2005StatutMembreDernière intervention22 juin 2005 21 avril 2005 à 16:17
Ok. En fait, ce que tu dis m'irai tres bien, puisque qu'il me retournerait 0 tant que le fichier est en création, puis une taille lorsqu'il serait fini. Ca simplifirait meme mon code ( tant que taille = 0 ... ).
Mais le probleme est que, meme une fois le fichier créée, consultable, etc, la taille obtenu par le filesize n'évolue pas, et reste a 0. Alors que si je lance ce programme sur un fichier déja créé, il me retourne la bonne taille donc marche bien.
tekbright
Messages postés17Date d'inscriptionjeudi 7 avril 2005StatutMembreDernière intervention22 juin 2005 21 avril 2005 à 16:57
En fait c'est un fichier pdf généré par une imprimante virtuelle.
L'imprimante le créé dans un dossier par défaut ( que je ne peut
modifier de maniere automatique, c a d dans le code ), et je voudrais,
une fois le fichier "imprimé", je voudrais le déplacer dans un dossier
de mon choix.
Mais j'ai trouvé une autre solution, je le fait par rapport a la date
de la dernière modification. Quand le fichier est créé, elle prend une
valeur, qu'il garde jusqu'a qu'il soit généré. Et une foit finit, elle
en prend une nouvelle.
Le code donne ceci :
$fin = false;
$date1 = 0;
while ( $fin != false) {
$date = filemtime ($filename);
if ( $date1 0 ) $date1 $date;
if ( $date1 != $date ) {
$fin = true;
}else{
sleep(2);
}
}
echo "Fin de l'ecriture de la date";
Bon, ca reste pas tres élégants, et il faut encore faire des sécurités par rapport a la date actuelle etc ...