¿Qué es el buffering de salida y por qué uno lo usa en PHP?¿Qué es el buffer de salida?
Respuesta
Output Buffering for Web Developers, a Beginner’s Guide:
Sin búfer de salida (por defecto), el código HTML se envía al navegador de piezas como PHP procesa a través de su escritura. Con el buffer de salida, su HTML se almacena en una variable y se envía al navegador como una sola pieza al final de su script.
Ventajas de búferes de salida para los desarrolladores web
- Encendido de búfer de salida solo disminuye la cantidad de tiempo que se tarda en descargar y hacer que nuestro HTML, ya que no está siendo enviada al navegador de piezas como PHP procesa el código HTML .
- Todas las cosas sofisticadas que podemos hacer con cadenas de PHP, ahora podemos hacer con toda nuestra página HTML como una variable.
- Si alguna vez ha encontrado el mensaje "Advertencia: no se puede modificar la información del encabezado: encabezados ya enviados por (salida)" al establecer cookies, le complacerá saber que el buffer de salida es su respuesta.
Las funciones de Control de Salida le permiten controlar cuando la salida se envía desde el guión. Esto puede ser útil en varias situaciones diferentes, especialmente si necesita enviar encabezados al explorador después de que su secuencia de comandos haya comenzó a dar salida a los datos. Las funciones de control de salida no afectan a los encabezados enviados usando header() o setcookie(), solo funciones como echo() y datos entre bloques del código PHP .
http://php.net/manual/en/book.outcontrol.php
Más Recursos:
Output buffering es utilizado por PHP para mejorar el rendimiento y realizar algunos trucos.
Puede hacer que PHP almacene toda la salida en un búfer y que se eche todo al mismo tiempo mejorando el rendimiento de la red.
Puede acceder al contenido del búfer sin enviarlo al navegador en determinadas situaciones.
Considere este ejemplo:
<?php
ob_start();
phpinfo();
$output = ob_get_clean();
?>
El ejemplo anterior capta la salida en una variable en lugar de enviarlo al navegador. output_buffering está desactivado por defecto.
- Puede usar el almacenamiento en búfer de salida en situaciones en las que desee modificar encabezados después de enviar contenido.
Considere este ejemplo:
<?php
ob_start();
echo "Hello World";
if ($some_error)
{
header("Location: error.php");
exit(0);
}
?>
La misma pregunta aquí que para Ax: ¿no está comenzando el almacenamiento en búfer de salida sin volver a desactivarlo más tarde, haciendo que el script se ejecute en todo tipo de problemas? –
El búfer se vacía cuando llama a uno de los métodos de descarga (por ejemplo, 'ob_flush()' o 'ob_end_flush()'). El contenido del búfer también se vacía cuando el script finaliza, abruptamente o de otra forma, por lo que no debería haber un problema. –
Como el nombre sugiere aquí búfer de memoria utilizadas para gestionar la apariencia de la salida del guión.
Aquí hay un very good tutorial para el tema
- 1. ¿Qué es la insuficiencia de buffer?
- 2. ¿qué es un buffer de tienda?
- 3. ¿Es seguro sprintf (buffer, "% s [...]", buffer, [...])?
- 4. ¿Cómo suprimo el buffer de salida de python-mode?
- 5. ¿Qué es un "buffer" en VIM?
- 6. ocultar el buffer de salida de látex (auctex)
- 7. strcpy cuando el buffer de dest es más pequeño que el buffer de src
- 8. ¿Quién es el buffer setvbuf de free?
- 9. ¿El triple buffer es realmente un impulso de rendimiento gratuito?
- 10. Buffer de salida PHP: parece una mala idea, ¿o sí?
- 11. emacs tuberías de concha de salida a un nuevo buffer
- 12. Kohana 3 Buffer de salida de línea de comando?
- 13. ¿Buffer de entrada y salida predeterminado para archivos fopen'd?
- 14. Buffer vs String speed: ¿Por qué String es más rápido?
- 15. Utilizando ofstream para salida con buffer para obtener rendimiento
- 16. Emacs: buffer de desplazamiento no es el punto
- 17. Cuál es el tamaño máximo de un Node.js Buffer
- 18. ¿Por qué la salida es diferente?
- 19. ¿Qué es exactamente "salida" en PowerShell?
- 20. ¿Por qué jpegStillImageNSDataRepresentation lanza una excepción cuando el buffer de muestra NO es nulo?
- 21. CodeIgniter - ¿Editando el Buffer de Salida antes de ser enviado al navegador?
- 22. ¿Por qué debería hacer doble buffer manual?
- 23. Flushing Perl STDIN buffer
- 24. iOS OpenGL ES Logical Buffer Loads
- 25. ¿Es posible evaluar el buffer completo en Emacs?
- 26. ¿por qué el protocolo Buffer bytes es una cadena en C++?
- 27. ¿Qué es la "Velocidad de salida de la memoria"
- 28. ¿Cómo purgo el buffer cin?
- 29. PHP buffer ob_flush() vs. flush()
- 30. Clear Console Buffer
+1. Aquí hay otro enlace útil: http://php.net/manual/en/function.ob-start.php - también útil cuando se trata de una función que muestra un valor que preferiría almacenar en una variable. – Cam
¿Está todo realmente amortiguado hasta el final, o la página solo vendrá en pedazos si tengo una página larga? – zedoo
@zedoo si inicia el almacenamiento en búfer de salida con 'ob_start()', * realmente todo * está almacenado en el búfer. hay un segundo parámetro opcional para 'ob_start()', 'int $ chunk_size', que, si se establece, hará que el búfer se descargue después de cualquier llamada de salida que haga que la longitud del búfer sea igual o superior a este tamaño. –