Rechercher : dans
Par :

Affichage progressif [php]

Dernière réponse le 26 jan 2009 à 22:55:17 bubuche87, le 28 mar 2007 à 19:55:22 
 Signaler ce message aux modérateurs

Bonjour, je voudrai savoir si il est possible d'envoyer les donnés au navigateur en même temps que le code s'éxécute. pour vous donner un exemple, le code

echo 'hello';
sleep (10);
echo ' world';

devrait afficher "hello", puis attendre (l'avancement du programme marquerait en attente du serveur yyy) puis afficher " world"

contrairement à maintenant ou il attend que l'éxécution soit fini pour tout envoyer.

merci :D

(ce que je veux se passe dans les message d'erreur dans des boucles infinies ou la liste des erreurs s'allonge au fur et à mesure)

Configuration: Windows XP
Firefox 2.0.0.3

Meilleures réponses pour « affichage progressif [php] » dans :
[Webmaster] Afficher facilement le code php/xhtml de vos pages VoirSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...
[PHP] Comment afficher l'adresse IP d'un visiteur ? VoirPour afficher l'adresse IP d'un visiteur sur votre site, insérez ce code dans la zone où vous voulez qu'elle s'affiche.
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...

1

maxinfos, le 16 jun 2008 à 11:10:01

Je cherche à faire la même chose ... UP !

Répondre à maxinfos

2

bubuche87, le 16 jun 2008 à 11:23:14

Alors, j'ai tenté de le faire, et j'ai trouvé la fonction : flush.
Elle ne prend aucun paramètre, et vide les tampons de sortie.
Mais cela pose plusieurs problèmes : tout d'abord, des problèmes de performances, le fait de fait plusieurs sorite n'est pas anodin en terme de charge.
Ensuite, plus grave, on se heurte à un nouveau buffer, celui du navigateur, et là il n'existe bien sur aucune fonction php pour forcer cet affichage. Ceci dit, il existe peut être des solutions au niveau de la fonction header.

Bonne chance :)

Répondre à bubuche87

3

maxinfos, le 16 jun 2008 à 11:57:21

Il faut utiliser : flush() suivi de ob_flush() et là on peut faire une "boucle infinie" avec un sleep(int) dedans ....

Exemple :

while($run ==1) {

echo "<br />".date('H:i:s')."<br />";
flush();
ob_flush();
sleep(1);
}

Répondre à maxinfos

4

bubuche87, le 16 jun 2008 à 13:28:24

Je sais ce que fais la fonction flush, mais il y a un petit problème : quand tu envoi des informations au navigateur, certain n'affiche pas directement ces informations : ils attendent d'avoir un certain nombre de caractères, ou que le signal de fin soit envoyé. Ceci fait un gros problème : même si les informations sont envoyée vers le navigateur, elle ne sont pas affichées directement.
Sinon, je crois qu'il est possible de modifier le fichier php.ini, pour pouvoir faire en sorte d'annuler le tampon, et ne donc plus avoir besoin de flush. Mais encore une fois, cela diminue les performances.

Répondre à bubuche87

5

Nirahiel, le 26 jan 2009 à 22:46:32
  • +1

Je ressors un peu le sujet de la tombe mais bon, je voulais réagir..
Voila ta fonction :D

<?php
for($i=0;$i<10;$i++) {
	echo str_pad(".",4096);//allonger la taille du texte pour forcer l'affichage
	flush();
	ob_flush();
	sleep(1);
}
?>

Répondre à Nirahiel

6

 bubuche87, le 26 jan 2009 à 22:55:17

Merci, ça fait longtemps que je suis passé à autre chose, mais merci. Ce n'était qu'un exercice de style.

De toute façon, cette fonction permet bien d'envoyer les données au navigateur, mais celui-ci utilise son propre cache.

J'ai beaucoup progressé depuis, je fais des logiciels en c++, je donne des cours de c et par dessus tout, j'aide le plus possible les étudiants pour le php, que je maitrise bien mieux.

Merci pour ton aide en tout cas ;)

Répondre à bubuche87