2010-06-24 17 views
10

Tytuł jest oczywisty.Jak działają nagłówki z buforowaniem wyjściowym w PHP?

Mam duże doświadczenie z PHP, ale nie jestem pewien, jak działa funkcja ob_start() i .

Rozważ to:

ob_start(); 

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

$output = ob_get_contents(); 
ob_end_clean(); 

echo $output; 

Czy funkcja header ignorują buforowanie wyjścia, a więc wszystkie nagłówki wysyłane przed treścią, ponieważ jest echo ed po wywołaniu header?

Czy to działa w jakiś inny sposób?

+1

* (odniesienie) * ['ob_start'] (http://de2.php.net/manual/en/function.ob-start.php) - Ta funkcja spowoduje włączenie buforowania wyjść. Podczas buforowania wyjścia nie są wysyłane żadne dane wyjściowe ze skryptu ** (inne niż nagłówki) **, zamiast tego dane wyjściowe są przechowywane w buforze wewnętrznym. – Gordon

+0

Oh, hej, tęskniłem za tym. To powinno mnie nauczyć trochę czytać bliżej. Dzięki, Gordon. –

Odpowiedz

14

Urządzenie header() rzeczywiście ignoruje buforowanie wyjściowe. Jednym z powodów użycia bufora wyjściowego jest możliwość wysyłania nagłówków HTTP "nieczynnych", ponieważ odpowiedź jest buforowana. Nie możesz wysyłać nagłówków HTTP po wysłaniu jakiegokolwiek wyjścia (chyba że dane wyjściowe są buforowane).