La bufferisation de sortie est le stockage tamponné (temporaire) de la sortie avant qu'elle ne soit lavée (envoyée et supprimée) au navigateur (dans un contexte web) ou au shell (en ligne de commande). Tant que la bufferisation de sortie est active, aucune sortie n'est envoyée par le script, au lieu de cela, la sortie est stockée dans un tampon interne.
PHP dépend de l'infrastructure logicielle/matérielle sous-jacente lors du vidage de tampon de la sortie. La bufferisation implémentée par les consoles en ligne de commande (par exemple, en mode ligne) ou les serveurs web et les navigateurs dans un contexte web (par exemple, entièrement bufferisé) affectent quand la sortie est affichée à l'utilisateur final. Certains de ces effets peuvent être éliminés en ajustant finement les paramètres du serveur et/ou en alignant les tailles des tampons des différentes couches.
PHP apporte un tampon de sortie utilisateur entièrement bufferisé avec des fonctions pour démarrer, manipuler et désactiver le tampon (la plupart des fonctions ob_*), et deux fonctions pour laver les tampons système sous-jacents (flush() et ob_implicit_flush()). Certaines de ces fonctionnalités peuvent être définies et/ou configurées en utilisant les paramètres php.ini appropriés.
La bufferisation de sortie est généralement utile dans des situations où la sortie bufferisée est modifiée ou inspectée, ou elle est utilisée plus d'une fois dans une requête ; ou lorsque le vidage de tampon contrôlé de la sortie est désiré. Les cas d'utilisation spécifiques incluent :
HTML
statiques
head
d'une page HTML
séparée du body
permet aux navigateurs
de charger des ressources externes pendant que le script exécute
des processus potentiellement plus longs
(par exemple, accès à une base de données/fichier, connexion réseau externe).
Ceci est utile uniquement si le code d'état HTTP
ne peut pas changer après l'envoi des en-têtes
HTML
manquantes),
ou en la supprimant entièrement dans certaines conditions (par exemple, erreurs)