Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script PHP et refraichissement Frame : BESOIN D'AIDE

1 réponse
Avatar
Chnain News
Bonjour,

J'ai écrit un script PHP qui fonctionne comme un "robot", c'est-à-dire
qui va chercher automatiquement des infos sur le net en ouvrant des
pages et en stockant en base MySQL les résultats de la recherche (ce
sont des titres de film, pour être plus précis).

Bien sûr, ce script est assez long à l'éxecution. Pour un seul acteur,
il me faut environ 2 à 5 minutes de calcul.

Pour avoir une visibilité sur le travail progressif du script, j'ai crée
des interfaces de lancement, et lorsque je lance le script de recherche,
j'ouvre d'abord une popup qui contient 2 frames :
- la premiere (topFrame) stocke une variable "film" puis lance le calcul
de recherche (passage de paramètres à une autre page php qui contient
les fonctions)
- la seconde (mainFrame) est censée afficher les résultats : le script
qui fait le calcul modifie la variable "film" grâce à du javascript

Le principe fonctionne car j'arrive bien à faire communiquer mes
fenetres entre elles, et la variable "film" est alimentée correctement.

LE PROBLEME : c'est que je n'arrive pas à avoir d'affichage progressif
des résultats : la frame "mainFrame" affiche le contenu de la variable
une fois que le calcul est terminé!

J'ai essayé de faire un refresh toutes les 5 secondes de ma page
mainFrame, ça ne donne rien de mieux.
Dans le script de calcul, j'ai essayer de rafraichir la page mainFrame
dès que la variable est modifiée, mais encore une fois, ça ne marche pas.
En effet, je pense que le script PHP de calcul réalise des "echo" qui
contiennent le code HTML / Javascript, mais ces echos sont de toute
façon exécuté que lorsque le script est terminé!
En fait, la question est : comment afficher une page qui n'est pas
encore terminée? Puisque le script de calcul ne contient pas de tag
Body ou autre, ce n'est que du PHP pur...

Je suis sûrement une mauvaise voie, mais si quelqu'un avait une idée.

Il se peut que ce que j'ai dit ne soit pas assez clair, dans ce cas,
dites-le moi.


Voici le code (enfin des extraits) :

Page topFrame :
<body>
<script language="javascript">
var film;
film = '';
</script>
<a href='lance_film.php?toutreal=<?php echo $_GET[toutreal] ?>'>
Cliquez pour valider</a>

mainFrame :
<body>
Résultats de la recherche :
<br>
<script language="javascript">
document.write(parent.topFrame.film);
</script>
<br>
</font>
</body>

puis lance_film.php appel une fonction contenue dans robotfilm.php qui
contient ceci :

$titre_fr = addslashes($titre_fr);

echo "
<script language=\"javascript\">
top.topFrame.film += '";
echo $titre_fr;
echo "<br>';
top.mainFrame.location.reload(true);
</script>";

// le reload de la dernière ligne devrait rafraichir ma frame qui
affiche la variable : Or, ceci ne se produit qu'à la fin.
A savoir que cette partie est contenue dans une boucle de calcul.


MERCI

CHRISTOPHE

1 réponse

Avatar
Guillaume Bouchard
Chnain News wrote:

LE PROBLEME : c'est que je n'arrive pas à avoir d'affichage progressif
des résultats : la frame "mainFrame" affiche le contenu de la variable
une fois que le calcul est terminé!


Probleme d'output buffering. Kete un oeil du coté de la fonction flush();

--
Guillaume.