La bufferisation de sortie permet d'envoyer les données au navigateur à un moment précis. Elle permet également d'éviter l'erreur des [b]headers already sent[/b] et est donc très utile
La fonction [b]ob_start()[/b] :
Cette fonction permet d'enclencher la mise en buffer de tout le code html qui sera généré par PHP. La fonction [b]ob_end_flush()[/b] permet d'envoyer le contenu du buffer au navigateur.
Exemple :
<?php
ob_start();
//Votre code PHP
ob_end_flush();
?>
La fonction [b]ob_start()[/b] peut également prendre une fonction comme paramètre, cette fonction sera appelée lorsque vous enverrez le buffer à l'aide de la fonction [b]ob_end_flush()[/b].
Exemple :
<?php
ob_start('fonction_ici');
function fonction_ici($output_buffer)
{
return $output_buffer.'Fin de la page';
}
//Votre code PHP
ob_end_flush();
?>
Ici, notre exemple rajoutera à la fin de la page la mention 'Fin de la page'. Cette possibilité peut être très utile pour rajouter des mentions en bas de page sans faire d'include spécifique et sans utiliser la fonction [b]ob_get_contents()[/b].
La fonction [b]ob_end_flush()[/b] :
Cette fonction envoit les données contenues dans le buffer de sortie et détruit ensuite le contenu du buffer.
La fonction [b]ob_flush()[/b] :
Cette fonction envoit les données contenues dans le buffer de sortie.
La fonction [b]ob_clean()[/b] :
Cette fonction permet d'effacer le buffer de sortie.
La fonction [b]ob_get_clean()[/b] :
Cette fonction lit le contenu du buffer de sortie puis l'efface.
La fonction [b]ob_get_contents()[/b] :
Cette fonction retourne le contenu du buffer.
Exemple :
<?php
ob_start();
echo 'test';
$buffer=ob_get_contents(); //La variable $buffer contiendra la valeur 'test'
ob_end_flush();
?>
La fonction [b]ob_get_length()[/b] :
Cette fonction retourne la taille en octets du buffer de sortie. Elle est particulièrement utile quand vous souhaitez retourner la taille du contenu qui va être envoyé au navigateur. C'est généralement de cette façon que font certains sites pour afficher la quantité de données (affichée généralement en [url=http://www.vulgarisation-informatique.com/ko-mo-go.php]Ko[/url]) qu'ils vous ont envoyé. Voici un exemple :
[color:d40e=#000000]
[color:d40e=#0000bb]<?php
ob_start[/color][color:d40e=#007700]();
[/color][color:d40e=#0000bb]ob_start[/color][color:d40e=#007700]([/color][color:d40e=#dd0000]'ob_gzhandler'[/color][color:d40e=#007700]);
echo [/color][color:d40e=#dd0000]'tout ce qui doit être transmis'[/color][color:d40e=#007700];
[/color][color:d40e=#0000bb]header[/color][color:d40e=#007700]([/color][color:d40e=#dd0000]'Content-Type: text/xml'[/color][color:d40e=#007700]);
[/color][color:d40e=#0000bb]header[/color][color:d40e=#007700]([/color][color:d40e=#dd0000]'Content-Length: '[/color][color:d40e=#007700].[/color][color:d40e=#0000bb]ob_get_length[/color][color:d40e=#007700]()); [/color][color:d40e=#ff8000]//retournera la taille en octets de tout ce qui a été envoyé au navigateur (soit ici la taille de la chaîne "tout ce qui doit être transmis")
[/color][color:d40e=#0000bb]ob_end_flush[/color][color:d40e=#007700]();
[/color][color:d40e=#0000bb]?>[/color] [/color]
La fonction [b]ob_gzhandler()[/b] :
Cette fonction permet d'être placée à la place de la fonction [b]ob_start()[/b]. Elle permet si le serveur le supporte de compresser les pages web pour accélérer le temps de téléchargement pour le visiteur et gaspiller moins de trafic. Malheureusement cette option est souvent désactivée sur la plupart des hébergeurs. Vous pouvez toutefois utiliser cette option qui ne génèrera pas d'erreur meme
si la compression n'est pas utilisable sur le serveur.