2010-05-14 34 views

Respuesta

218

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.
+3

+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

+0

¿Está todo realmente amortiguado hasta el final, o la página solo vendrá en pedazos si tengo una página larga? – zedoo

+4

@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. –

7

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 With PHP

48

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); 
    } 
?> 
+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? –

+1

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. –

4

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

Cuestiones relacionadas