Aller au contenu

[RESOLU] [PHP] Temporisation de sortie


lordv

Messages recommandés

Salut ,

J’ai un petit problème avec une fonction qui sauvegarde le résultat de l'inclusion d'un fichier dans une variable.

Cela ne marche tout simplement pas enfin la temporisation se fait seulement

il me l’affiche en même temps qu’il stock dans le buffer.

Un exemple tout simple ce code m’affiche deux fois « salut »

ob_start();
echo "salut"; //ce echo est envoye au navigateur 
$out = ob_get_flush();
exit($out); //plus celui du buffer  

si quelqu'un peut m’aider SVP

merci d’avance

PS j'ai essaye sous windows :PHP/5.3.2 ZendServer

et sous ubuntu :

Server:nginx/0.7.67

Transfer-Encoding:chunked

X-Powered-By:PHP/5.3.5

Lien vers le commentaire
Partager sur d’autres sites

Sur un serveur de tests, ça me faisait pareil, alors j'ai vu que quelqu'un dans les commentaires du manuel a posté un exemple, et je m'en suis inspiré :

<?php
ob_start();
echo "salut"; //ce echo est envoye au navigateur 
$out = ob_get_flush();
ob_clean();
echo $out; //plus celui du buffer
?>

Grâce à ob_clean() avant d'utiliser la variable, cela semble fonctionner et c'est affiché une seule fois.

Pareil chez vous ?

Lien vers le commentaire
Partager sur d’autres sites

Oui j'ai le même résultat que vous .

le problème reste maintenant l'inclusion de fichier

<?php
ob_start();
include_once("fichierdevue.php"); //traitement de la vue
$out = ob_get_flush();
ob_clean();
//puis utilisation de $out dans un layout
?>

J’avais essayé avec un echo juste pour le debug.

comme la solution propose dans ce topic

il y'a aussi l'exemple du site officiel exemple #6

qui ne marche pas pour moi malgre l'absence de echo

Lien vers le commentaire
Partager sur d’autres sites

J'ai résolu mon problème .en fait l’utilisation de ob_end_flush envoi le buffer au navigateur .donc j’ai utilisé ob_end_clean pareil pour ob_get_flush qui retourne une chaine mais aussi envoi au navigateur.

la doc php n'est pas tres clair a ce sujet surtout ici

Il n'est dit nulle part que la sortie est envoyée au navigateur aussi.

Voila mon code qui marche pas de flush :transpi:

ob_start();
$Ctr_name = explode("ctr_",$this->_controller_name);		
$Ctr_name  = $Ctr_name[1];
include $Ctr_name.'/V_'.$this->view.'.php';	
$content_for_layout = ob_get_contents();
ob_end_clean();	
ob_start();
include 'l_'.$this->layout.'.php';
$content = ob_get_contents();
ob_end_clean(); 
return $content;

Merci Amour :smack::transpi:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...