Vide les buffers de sortie
void flush
(void)
flush() vide les buffers de sortie de PHP et
tous ceux que PHP utilisait (CGI, un serveur web, etc.).
Note :
flush() n'a aucun effet sur la bufferisation
de votre serveur web ou du navigateur.
De nombreux serveurs, essentiellement sous Windows,
continueront à bufferiser l'affichage de votre script
jusqu'à ce qu'il soit terminé, avant de transmettre
les résultats à l'internaute.
Même le navigateur peut mettre des informations en cache
avant de les afficher. Par exemple, Netscape écrit les
textes dand un cache, jusqu'à ce qu'il ait reçu une
fin de ligne, ou une balise ouvrante. Il n'affichera
pas les tables avant d'avoir reçu la balise fermante
</table>.
@node function.ob-start , function.flush, function.ob-gzhandler, Top
Enclenche la bufferisation de sortie
void @xref{function.ob-start,,ob_start}
(string
output_callback
)
@xref{function.ob-start,,ob_start()} démarre la bufferisation de sortie.
Tant qu'elle est enclenchée, aucune donnée, hormis
les en-têtes, n'est envoyée au navigateur, mais
temporairement mise en buffer.
Le contenu de ce buffer peut être copié dans une chaîne
avec la fonction ob_get_contents(). Pour afficher le
contenu de ce buffer, utilisez ob_end_flush(). Au
contraire, ob_end_clean() effacera le contenu de ce buffer.
Une fonction optionnelle de callback peut être spécifiée
en troisième argument. @xref{function.ob-start,,ob_start()} prend une
chaîne comme paramètre, et retourne une chaîne.
Elle sera appelée par ob_end_flush() ou
lorsque le buffer sera envoyé au navigateur à la fin du script et
recevra le contenu du buffer de sortie. Lorsque la fonction
output_callback est appelée,
elle doit retourner un nouveau contenu pour le buffer de sortie :
celui-ci sera envoyé au navigateur.
Note :
En PHP 4.0.4, ob_gzhandler() a été
introduit pour faciliter l'envoi de fichier compressé
avec gz aux navigateurs web qui supportent les pages
compressées. ob_gzhandler()
détermine le type d'encodage accepté par un navigateur,
et retourne le contenu le plus adéquat.
Les buffers de sortie sont gérés par pile,
c'est-à-dire que vous pouvez appeler plusieurs fois
@xref{function.ob-start,,ob_start()} simultanément.
Assurez-vous que vous appelez ob_end_flush()
suffisamment souvent. Si plusieurs fonctions de callback
sont actives, les contenus seront filtrés
séquentiellement, dans l'ordre d'emboîtement.
Exemple de callback avec fonction utilisateur
<?php
function callback($buffer) {
// remplace toutes les pommes par des oranges
return (ereg_replace("pommes de terre", "carottes", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>C'est comme comparer des carottes et des pommes de terre.
</body>
</html>
<?php
ob_end_flush();
?>
va afficher :
<html>
<body>
<p>C'est comme comparer des carottes et des carottes.
</body>
</html>
Voir aussi
ob_get_contents(),
ob_end_flush(),
ob_end_clean(),
ob_implicit_flush() et
ob_gzhandler().