2010-06-24 10 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).

Powiązane problemy