2010-06-24 14 views
10

El título es autoexplicativo.¿Cómo funcionan los encabezados con el almacenamiento en búfer de salida en PHP?

Tengo un buen poco de experiencia con PHP, pero no estoy seguro de cómo la función header funciona entre y ob_end_clean().

Considera:

ob_start(); 

echo "Some content"; 
header('X-Example-Header: foo'); 
echo "Some more content"; 

$output = ob_get_contents(); 
ob_end_clean(); 

echo $output; 

hace la función header ignoran el búfer de salida, y por lo tanto todas las cabeceras enviadas antes del contenido, ya que es echo ed después de la llamada header?

¿O funciona de otra manera?

+1

* (referencia) * ['ob_start'] (http://de2.php.net/manual/en/function.ob-start.php) - Esta función activará el almacenamiento en búfer de salida. Mientras que el almacenamiento en búfer de salida está activo, no se envía salida del script ** (que no sean los encabezados) **, sino que el resultado se almacena en un búfer interno. – Gordon

+0

Oh, hey, me lo perdí. Eso debería enseñarme a leer un poco más. Gracias, Gordon. –

Respuesta

14

De hecho, el header() ignora el almacenamiento en búfer de salida. Parte de la razón para usar el almacenamiento en búfer de salida es para poder enviar los encabezados HTTP "fuera de servicio" ya que la respuesta está almacenada temporalmente. No puede enviar encabezados HTTP una vez que haya enviado algún tipo de salida (a menos que esa salida esté almacenada temporalmente).

Cuestiones relacionadas