PHP 8.5.0 Alpha 2 available for testing

Vaciar los búferes del sistema

PHP ofrece dos formas de vaciar (enviar y eliminar el contenido) los búferes del sistema: mediante la llamada a flush() y activando el vaciado de búfer implícito con ob_implicit_flush() o el parámetro implicit_flush de php.ini.

Comportamiento de vaciado del búfer de salida

Con el vaciado de búfer implícito desactivado, PHP solo vacía la salida cuando se llama a flush() o cuando finaliza el script.

Con el vaciado de búfer implícito activado, PHP intentará vaciar después de cada bloque de código que produzca salida. La salida en este contexto son datos de longitud no nula que son:

Nota: Mostrar strings vacíos o enviar encabezados no se considera salida y no desencadenará una operación de vaciado de búfer.

Advertencia

Si el vaciado de búfer implícito está activado, los caracteres de control (por ejemplo "\n", "\r", "\0") también desencadenarán un vaciado de búfer.

Limitaciones

Esta funcionalidad no puede vaciar los búferes de salida a nivel de usuario. Para usarlos juntos, los búferes de salida a nivel de usuario deben ser vaciados antes de vaciar los búferes del sistema para que PHP produzca una salida.

Advertencia

Llamar a flush() o activar el vaciado de búfer implícito puede interferir con los manejadores de salida de los búferes de salida a nivel de usuario que definen y envían encabezados en un contexto web (por ejemplo ob_gzhandler()) al enviar encabezados antes de que estos manejadores lo hagan.

El almacenamiento en búfer implementado por el software/hardware subyacente no puede ser reemplazado por PHP y debe ser tenido en cuenta al utilizar las funciones de control de búferes de PHP. Verificar los parámetros de almacenamiento en búfer de los servidores web/navegadores/consolas y trabajar con ellos puede mitigar los problemas potenciales. Trabajando en un contexto web, ya sea los parámetros de almacenamiento en búfer del servidor web o el almacenamiento en búfer del script podrían ser ajustados para funcionar en conjunto mientras que trabajar con las estrategias de almacenamiento en búfer de varios navegadores puede lograrse ajustando el almacenamiento en búfer en el script PHP. En las consolas que implementan el almacenamiento en búfer por línea, los caracteres de nueva línea podrían ser insertados en los lugares apropiados antes de vaciar la salida.

Diferencias en el vaciado entre SAPI

Aunque el vaciado de búfer es implementado por cada SAPI de manera ligeramente diferente, estas implementaciones caen en una de dos categorías:

  • Los SAPIs usados en un contexto web vaciarán primero los encabezados seguidos de la salida. Apache2Handler, CGI, FastCGI y FPM son tales SAPIs
  • otros SAPIs tales como CLI y embed vaciarán solo la salida

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top