W3docs

Función ob_get_flush() de PHP: Todo lo que necesitas saber

Aprende cómo funciona ob_get_flush() en PHP para obtener el contenido del búfer de salida y enviarlo al mismo tiempo en una sola llamada.

Como desarrollador PHP, puede que necesites recuperar el contenido del búfer de salida y vaciarlo al mismo tiempo. La función ob_get_flush() es una función nativa de PHP que hace ambas cosas en una sola llamada: devuelve el contenido actual del búfer como una cadena y lo envía al siguiente nivel de salida. Este artículo explica cómo funciona, qué devuelve y cuándo utilizarla en lugar de otras funciones de control de salida.

¿Qué es la función ob_get_flush()?

El almacenamiento en búfer de salida permite a PHP recopilar todo lo que echo o print en memoria en lugar de enviarlo directamente al navegador. Se inicia un búfer con ob_start(), se escribe en él de la forma habitual y luego se decide qué hacer con la salida capturada.

ob_get_flush() realiza tres acciones en un solo paso:

  1. Obtiene el contenido del búfer de salida activo (el más alto) y lo devuelve como una cadena.
  2. Vacía ese contenido — lo envía al siguiente nivel de búfer, o al navegador si no existe otro nivel.
  3. Cierra ese nivel de búfer (se elimina un nivel de anidamiento).

Esto la convierte en una combinación conveniente de ob_get_contents() (leer) y ob_end_flush() (enviar + cerrar).

Sintaxis

ob_get_flush(): string|false

Parámetros

ob_get_flush() no acepta ningún parámetro.

Valor de retorno

La función devuelve el contenido del búfer de salida más alto como una cadena. Si el almacenamiento en búfer de salida no está activo (no hay ningún búfer que vaciar), devuelve false y genera un aviso. Siempre inicia un búfer con ob_start() antes de llamarla.

Cómo usar la función ob_get_flush()

El patrón es: iniciar un búfer, escribir en él y luego llamar a ob_get_flush() para capturarlo y liberarlo.

<?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;

Salida:

This will be buffered
Captured copy: This will be buffered

Aquí "This will be buffered" se recopila en el búfer en lugar de imprimirse de inmediato. ob_get_flush() devuelve ese texto (por lo que $output ahora lo contiene) y al mismo tiempo lo envía al navegador — por eso la frase aparece dos veces: una del vaciado y otra del echo final.

Si el almacenamiento en búfer no está activo cuando la llamas, obtienes false de vuelta:

<?php

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

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

ob_get_flush() vs. funciones relacionadas

Función¿Devuelve contenido?¿Envía a la salida?¿Cierra el búfer?
ob_get_flush()Sí (string)
ob_end_flush()No (bool)
ob_get_clean()Sí (string)No (descartado)
ob_get_contents()Sí (string)NoNo

Elige ob_get_flush() cuando quieras tanto conservar una copia de la salida en búfer (para registrar, inspeccionar o modificar) como enviarla al navegador. Si solo necesitas enviarla, usa ob_end_flush(); si quieres capturarla sin enviarla, usa ob_get_clean().

Conclusión

La función ob_get_flush() recupera el búfer de salida activo como una cadena mientras lo vacía y cierra en una sola llamada. Al comprender su lista de parámetros vacía, su valor de retorno string|false y su comportamiento de cierre del búfer, puedes gestionar los flujos de salida con mayor precisión. Para profundizar más, explora ob_start() para abrir búferes, ob_get_level() para verificar la profundidad de anidamiento y ob_flush() para vaciar sin cerrar.

Práctica

Práctica
¿Cuál es la función de ob_get_flush() en PHP?
¿Cuál es la función de ob_get_flush() en PHP?
Was this page helpful?