Interaction php javascript

Interaction php javascript - PHP - Programmation

Marsh Posté le 14-02-2008 à 19:31:39    

J'ai une page php qui dure assez longtemps (plus de 2h) je veux donc voir l'état d'avencement.
 
Pour cela j'ai ma page principale qui contient une balise Div représentant la barre de progression comme ceci :  

Code :
  1. <DIV id=barre style='background:#5385EC;width:0%;height:20px;text-align:center;font-weight:bold;'>0%</DIV></DIV>


 
J'ai mis une balise IFRAME qui contient la page qui lance la longue procédure comme ceci :

Code :
  1. <IFRAME id=proc src='proc.php' width=90% height=50% style='border:solid 1px black;'>


 
Je modifie la barre avec une fonction Javascript :  

Code :
  1. function maj_barre(val) {
  2. barre.style.width = val + "%";
  3. barre.innerHTML = Math.round(val) + "%";
  4. }


 
Cette fonction est lancer à chaque avancement de ma procédure comme ceci:

Code :
  1. echo "\n<script> parent.maj_barre(".round(100*$val/$max)." ); </script>";


 
LE problème : Le mise à jour de ma barre ne se fait pas régulièrement, je voudrai que lorsque j'écris

Code :
  1. <script> parent.maj_barre(".round(100*$val/$max)." ); </script>

la modification se fasse tout de suite.
La barre passe, par exemple, de 0, 17%, 34%, ... et non 1%, 2%, 3%, ... Il y a une modification toute les 2s


Message édité par snike le 14-02-2008 à 19:40:55

---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 14-02-2008 à 19:31:39   

Reply

Marsh Posté le 14-02-2008 à 21:07:51    

Arf, tu fais vraiment mouliner le serveur pendant deux heures ? À ce niveau là, ça vaudrait le coup de voir ce qui pourrait être fait avec un langage un peu plus rapide...
 
Cela dit, pour avoir fait un truc similaire (mais avec des traitements de quelques minutes au pire), voici comme je m'y suis pris :
 
- Lancement d'un processus sur le serveur qui va massacrer le disque/CPU/RAM.
- L'avancement du processus était facilement quantifiable, je l'ai donc mis dans un fichier temporaire avec un nom aléatoire, que je récupérait au moment de commencer le traitement.
- Récupération de ce fichier via XmlHttpRequest à intervalle régulier (1 seconde) et mise à jour d'un div quelconque.

Message cité 1 fois
Message édité par tpierron le 14-02-2008 à 21:08:38
Reply

Marsh Posté le 15-02-2008 à 08:54:31    

tpierron a écrit :

Arf, tu fais vraiment mouliner le serveur pendant deux heures ? À ce niveau là, ça vaudrait le coup de voir ce qui pourrait être fait avec un langage un peu plus rapide...
 
Cela dit, pour avoir fait un truc similaire (mais avec des traitements de quelques minutes au pire), voici comme je m'y suis pris :
 
- Lancement d'un processus sur le serveur qui va massacrer le disque/CPU/RAM.
- L'avancement du processus était facilement quantifiable, je l'ai donc mis dans un fichier temporaire avec un nom aléatoire, que je récupérait au moment de commencer le traitement.
- Récupération de ce fichier via XmlHttpRequest à intervalle régulier (1 seconde) et mise à jour d'un div quelconque.


 
 
XmlHttpRequest c'est Ajax non ?
J'y pense, je pourrais peut être mettre mon état d'avancement dans une variable de Session et comme tu dis remettre à jour ma barre toute les secondes, je vais essayer ça ce soir
 
Merci pour l'idée


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 16-02-2008 à 10:52:19    

Ca ne marche pas.
Lorsque je lance ma procédure la fenêtre qui contient la barre ce bloque.
Faut peut être utiliser XmlHttpRequest  mais ça je ne sais pas encore faire.


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 16-02-2008 à 19:24:39    

recherche sur d'ajax updater

Reply

Sujets relatifs:

Leave a Replay

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