W3docs

Fonction PHP ob_get_flush() : tout ce que vous devez savoir

Découvrez la fonction ob_get_flush() en PHP : comment elle récupère le contenu du tampon de sortie et le vide en un seul appel.

En tant que développeur PHP, vous pourriez avoir besoin de récupérer le contenu du tampon de sortie et de le vider simultanément. La fonction ob_get_flush() est une fonction intégrée de PHP qui effectue ces deux opérations en un seul appel : elle retourne le contenu actuel du tampon sous forme de chaîne et l'envoie au niveau de sortie suivant. Cet article explique comment elle fonctionne, ce qu'elle retourne, et quand l'utiliser plutôt que les autres fonctions de contrôle de sortie.

Qu'est-ce que la fonction ob_get_flush() ?

La mise en tampon de sortie permet à PHP de collecter tout ce que vous écrivez avec echo ou print en mémoire, au lieu de l'envoyer directement au navigateur. Vous démarrez un tampon avec ob_start(), écrivez dedans normalement, puis décidez de ce que vous voulez faire avec la sortie capturée.

ob_get_flush() effectue trois choses en une seule étape :

  1. Récupère le contenu du tampon de sortie actif (le plus haut) et le retourne sous forme de chaîne.
  2. Vide ce contenu — l'envoie au niveau de tampon suivant, ou au navigateur si aucun autre niveau n'existe.
  3. Ferme ce niveau de tampon (un niveau d'imbrication est supprimé).

C'est donc une combinaison pratique de ob_get_contents() (lecture) et ob_end_flush() (envoi + fermeture).

Syntaxe

ob_get_flush(): string|false

Paramètres

ob_get_flush() ne prend aucun paramètre.

Valeur de retour

La fonction retourne le contenu du tampon de sortie actif sous forme de chaîne. Si la mise en tampon de sortie n'est pas active (aucun tampon à vider), elle retourne false et génère une notice. Démarrez toujours un tampon avec ob_start() avant de l'appeler.

Comment utiliser la fonction ob_get_flush()

Le principe est le suivant : démarrer un tampon, y écrire, puis appeler ob_get_flush() pour le capturer et le libérer.

<?php

ob_start();
echo "This will be buffered";

// Capture the buffer, flush it to the browser, and close the level.
$output = ob_get_flush();

echo "\nCaptured copy: " . $output;

Résultat :

This will be buffered
Captured copy: This will be buffered

Ici, "This will be buffered" est collecté dans le tampon plutôt qu'affiché immédiatement. ob_get_flush() retourne ce texte (ainsi $output le contient) et l'envoie en même temps au navigateur — c'est pourquoi la phrase apparaît deux fois : une fois lors du vidage, et une fois lors du echo final.

Si la mise en tampon n'est pas active au moment de l'appel, vous obtenez false en retour :

<?php

$output = ob_get_flush(); // No ob_start() was called

var_dump($output); // bool(false)

ob_get_flush() par rapport aux fonctions associées

FonctionRetourne le contenu ?Envoie vers la sortie ?Ferme le tampon ?
ob_get_flush()Oui (chaîne)OuiOui
ob_end_flush()Non (bool)OuiOui
ob_get_clean()Oui (chaîne)Non (ignoré)Oui
ob_get_contents()Oui (chaîne)NonNon

Choisissez ob_get_flush() lorsque vous souhaitez à la fois conserver une copie de la sortie mise en tampon (pour la journaliser, l'inspecter ou la modifier) et l'envoyer quand même au navigateur. Si vous avez seulement besoin de l'envoyer, utilisez ob_end_flush() ; si vous voulez la récupérer sans l'envoyer, utilisez ob_get_clean().

Conclusion

La fonction ob_get_flush() récupère le tampon de sortie actif sous forme de chaîne tout en le vidant et en le fermant en un seul appel. En comprenant sa liste de paramètres vide, sa valeur de retour string|false et son comportement de fermeture de tampon, vous pouvez gérer les flux de sortie avec plus de précision. Pour aller plus loin, explorez ob_start() pour ouvrir des tampons, ob_get_level() pour vérifier la profondeur d'imbrication, et ob_flush() pour vider sans fermer.

Pratique

Pratique
Quel est le rôle de ob_get_flush() en PHP ?
Quel est le rôle de ob_get_flush() en PHP ?
Was this page helpful?