Les fonctions de bufferisation de sortie vous permettent de contrôler
quand les données ont été envoyées par le script. Cela peut
être utile dans certaines situations, notamment si vous devez
envoyer des en-têtes au navigateur après avoir envoyé
des données. Ces fonctions n'affectent pas les en-têtes
envoyés par la fonction header() ou les
cookies envoyés par setcookie(). Seules les
fonctions telles que echo() et les données entre
blocs PHP sont affectées.
Vous pouvez activer la bufferisation de sortie pour tous les fichiers
avec cette directive, en lui passant la valeur On.
Si vous souhaitez limiter la taille du buffer à une certaine taille,
vous pouvez alors indiquer un nombre maximum d'octets à la place de
On. Par exemple, output_buffering=4096).
Depuis PHP 4.3.5, cette directive est toujours désactivée en ligne
de commande.
Vous pouvez rediriger le résultat de tous vos scripts à une fonction
avant leur envoi au navigateur. Par exemple, si vous configurez
output_handler à mb_output_handler(), l'encodage
des caractères sera adapté de manière transparente. Configurer
une telle fonction active automatiquement la bufferisation de sortie.
Note :
Seules les fonctions internes peuvent être utilisées avec cette directive.
Pour les fonctions utilisateurs, utilisez ob_start().
implicit_flush
booléen
FALSE par défaut. En changeant cette valeur pour TRUE vous indiquez
à PHP que le buffer de sortie doit être vidé automatiquement après
chaque fonction d'affichage. Cela revient à appeler la fonction
flush() après chaque appel Ã
print() ou echo() et pour tous
les blocs HTML.
Lorsque vous utilisez PHP en environnement web, activer cette
option a de sérieuses implications et généralement, cela n'est conseillé
que pour les débogage. Cette valeur est par défaut à TRUE lorsque PHP
fonctionne en mode CLI SAPI.
Dans l'exemple ci-dessus, la fonction echo()
est stockée dans un buffer jusqu'Ã l'appel de la fonction
ob_end_flush(). Dans le même
temps, l'appel à setcookie() a réussi
à créer un cookie, sans générer d'erreur.
(D'habitude, vous devez envoyer les en-têtes avant les données).
Note :
Lorsque vous passez de PHP 4.1 ou 4.2 Ã 4.3, assurez-vous que
implict_flush est à OFF dans
votre php.ini, sinon la fonction
ob_start() ne masquera pas les affichages engendrés.