affichage instantané

Petit nouveau ! | 2 Messages

04 mai 2010, 15:10

Bonjour,
Je souhaiterais que mes résultats s'affichent au fur et à mesure qu'ils sont calculés. J'ai essayé tous les flush possibles, mais rien ne marche (ni sous IE ni sous FF).

$aclcul1=Calcul1();
echo $calcul1;
flush();

$calcul2=Calcul2():
echo $calcul2;
flush();

Y'a-t-il un autre moyen de faire ceci ? et qui marche ? :D
Merci beaucoup.
Bonne aprem !

Mammouth du PHP | 672 Messages

04 mai 2010, 15:47

Bonjour.

Pas certain d'avoir bien compris, mais bon...
L'idée est d'avoir une page sur laquelle il y a le résultat du calcul 1, puis une fois qu'il est fini celui du calcul 2, c'est bien ça ?

PHP renvoie une page "finie". Ca ne marchera pas, même avec des flush.

La solution, c'est AJAX :
Un javascript va demander la page PHP qui fait le premier calcul.
Une fois le calcul terminé, PHP renvoie le résultat, JS l'affiche puis demande la page qui fait le deuxième calcul.
Une fois le calcul terminé, PHP renvoie le résultat, JS l'affiche.

ViPHP
ViPHP | 5462 Messages

04 mai 2010, 15:53

PHP renvoie une page "finie". Ca ne marchera pas, même avec des flush.
si
echo '<pre>';	
ob_end_flush();
	
for($i = 0; $i < 10; $i++)
{		
	echo $i . PHP_EOL;		
	sleep(1);
	flush();
}

ViPHP
ViPHP | 1136 Messages

04 mai 2010, 19:28

Cela va dépendre aussi du navigateur ,

Chrome par exemple balance la sauce qu'à la fin compléte ( il posséde son propre buffer de sortie ) , alors que Firefox lui , fonctionne à merveille .
La configuration du serveur Web Apache IIS nginx ect .. peut aussi faire varier la façon dont est affiché le résultat .

Sinon , le code de Stealth35 est bien la bonne solution ...

Ch.

Petit nouveau ! | 2 Messages

05 mai 2010, 12:59

Super merci beaucoup ! :D