[RESOLU] Informations d'execution d'un script en continu

Informations d'execution d'un script en continu [RESOLU] - PHP - Programmation

Marsh Posté le 29-09-2005 à 11:33:26    

Bonjour a tous,
Serveur: Apache2 php5 sur win XP
 
 
Mon probleme est le suivant:  
J'ai un formulaire qui permet a l'utilisateur d'uploader un fichier lequel est analyse par un script en perl. L'execution de ce script peut prendre jusqu'a une minute aussi je souhaite tenir l'utilisateur au courant. Pour cela tout au long de l'execution du script, celui ci donne de ses nouvelles (15% complete...). Mon probleme est que tant que l'execution du script ne s'est pas terminee, le navigateur reste sur la page avec le formulaire. Il n'affiche meme pas le contenu statique de la page qui contient le code php qui affiche le script.
 
Mon code ressemble a ca:
<?php
(...)
echo "Ok, File upload succeeded<br>";
$file_path= "C:\\ici\\upload\\".$name;
echo "<br>";
echo passthru("C:\\un\\certain\\script.pl $file_path" );
unlink($file_path);  
(...)
?>
Cependant je ne pense pas que le probleme vienne de la... la question est d'ou ?
 
 
Merci beaucoup pour vos suggestions.


Message édité par brubru91 le 29-09-2005 à 14:23:14
Reply

Marsh Posté le 29-09-2005 à 11:33:26   

Reply

Marsh Posté le 29-09-2005 à 11:55:43    

plusieurs trucs :
tant que le fichier n'est pas uploader, le script ne sera pas exécuté.
Quand au script perl, si php sait à quel moment le script termine son exécution, c'est surement que php attend qu'il ai finis pour continuer sa propre exécution. Donc, là aussi le script ne peut rien faire tant qu'il n'a pas repris la main.
 
Mais bon, t'es au courant que le PERL est capable de fonctionner avec apache pour générer directement du code html renvoyé au navigateur? La solution serait peut être là. ;)

Reply

Marsh Posté le 29-09-2005 à 12:00:03    

Ce que je ne comprend pas c'est que le serveur ne fournisse pas la page au fur et a mesure mais attende qu'elle soit complete. Il ne donne meme pas la partie statique.
Pour ce qui est de Perl pour generer du html je suppose que tu fais allusion a mod_perl? Je l'ai installe mais je ne sais pas trop comment l'utiliser. En particulier ca voudrait dire qu'il faut que Perl prenne en charge l'upload du fichier et je ne sais pas si ca va etre aussi simple qu'en php.

Reply

Marsh Posté le 29-09-2005 à 13:06:45    

Si je me souviens bien, une histoire de buffer devrait faire l'affaire!

Reply

Marsh Posté le 29-09-2005 à 13:07:04    

Y a déjà eu uen discution sur comment gérer les caches d'apache de php et comment contourner les attentes d'affichage des navigateurs pour que ca s'affiche dessuite.
C'était dans la partie html, mais j'ai pas le liens.

Reply

Marsh Posté le 29-09-2005 à 13:36:11    

Je suppose que tu fais reference a ceci:
http://forum.hardware.fr/hardwaref [...] 7114-1.htm
En effet, ca resoud une partie de mon probleme: maintenant la partie avant le script est affichee directement en mettant flush(). Cependant ca ne m'aide pas pour afficher en continu la progression de l'execution du script.
 
merci en tout cas

Reply

Marsh Posté le 29-09-2005 à 14:21:24    


Ok grace a quelqu'un de tres aimable voici la solution:
il fallait desactiver le buffering dans le script perl de cette facon:
$|++; (juste apres la premiere ligne #!/usr/bin/perl -w)
 
Merci a tous

Reply

Marsh Posté le 29-09-2005 à 14:33:09    

Je savais bien qu'avec les buffer on arriverait à quelque chose! :)

Reply

Marsh Posté le 29-09-2005 à 14:37:12    

dwogsi a écrit :

Je savais bien qu'avec les buffer on arriverait à quelque chose! :)


 
Mmh bah un probleme de buffer oui c'est ce qu'il semblait cependant je suis un peu surpris que cela vienne du buffer d'execution du script de perl parce que quand j'executais le script directement depuis la console, il affichait au fur et a mesure et pas tout d'un coup. Ca veut dire que quand on appelle le script depuis une commande php comme system, c'est pas la meme chose.
Enfin l'important c'est que maintenant ca marche :)

Reply

Marsh Posté le 29-09-2005 à 15:01:31    

Je reconnais que ca parait un peu étrange puisqu'effectivement en mode console ca réagit pas pareil mais bon je suppose comme toi que ca doit pas fonctionné pareil quand c'est appelé par Php...
 
Mais, comme toujours, dès qu'il sagit d'envois le code déjà généré avant la fin de l'exécution d'un script => Buffers!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed