La bufferización de salida es el almacenamiento en búfer (temporal) de la salida antes de que sea volcada (enviada y eliminada) al navegador (en un contexto web) o al shell (en línea de comandos). Mientras la bufferización de salida esté activa, ninguna salida es enviada por el script, en su lugar, la salida es almacenada en un búfer interno.
PHP depende de la infraestructura lógica/material subyacente al vaciar el búfer de la salida. La bufferización implementada por las consolas en línea de comandos (por ejemplo, en modo línea) o los servidores web y los navegadores en un contexto web (por ejemplo, completamente bufferizado) afectan cuándo se muestra la salida al usuario final. Algunos de estos efectos pueden ser eliminados ajustando finamente los parámetros del servidor y/o alineando los tamaños de los búferes de las diferentes capas.
PHP proporciona un búfer de salida de usuario completamente bufferizado con funciones para iniciar, manipular y desactivar el búfer (la mayoría de las funciones ob_*), y dos funciones para vaciar los búferes del sistema subyacentes (flush() y ob_implicit_flush()). Algunas de estas funcionalidades pueden ser definidas y/o configuradas utilizando los parámetros php.ini apropiados.
La bufferización de salida es generalmente útil en situaciones donde la salida bufferizada es modificada o inspeccionada, o es utilizada más de una vez en una petición; o cuando se desea el vaciado controlado del búfer de la salida. Los casos de uso específicos incluyen:
HTML
estáticas
head
de una página HTML
separada del body
permite a los navegadores
cargar recursos externos mientras el script ejecuta
procesos potencialmente más largos
(por ejemplo, acceso a una base de datos/fichero, conexión de red externa).
Esto es útil únicamente si el código de estado HTTP
no puede cambiar después del envío de las cabeceras
HTML
faltantes),
o al eliminarla completamente bajo ciertas condiciones (por ejemplo, errores)