2013-08-05 4 views
0

У меня есть некоторый код, который выполняет следующие действия:PHP: Что происходит после окончания буферизации вывода

<?php 
ob_flush(); 
ob_start(); 
echo $something; 
ob_end_flush(); 

echo $another_thing; 
?> 

Я могу видеть $something но не $another_thing;

Согласно ручному ob_end_flush() просто отключает буферизацию вывода , так что если это так, почему я не могу видеть $another_thing; точно так же, как если бы я написал без буферизации вывода:

<?php 
echo $something; 
echo $another_thing; 
?> 

Хотя я не видел причин, почему это должно сработать, я решил попробовать позвонить flush() и ob_flush() после echo $another_thing;, но это тоже не помогло.

Каков правильный способ сделать это, и почему это не работает?

Thanks

+0

работает для меня http://phpfiddle.org/main/code/06s-kmj, может быть, $ another_thing пуст или непечатаем? – Orangepill

+0

Спасибо - см. Мой ответ ниже, получается, что буферизация вывода не имеет к этому никакого отношения. – ec2011

ответ

0

Оказывается, проблема была в другом месте!

В процессе установки $something; выше я вызывал ряд функций в большом шаблоне, а где-то там похоронен оператор exit, поэтому проблема не была связана с буферизацией вывода!