как сделать вывод эхо прямо в PHP? - PullRequest
6 голосов
/ 10 июня 2009

По умолчанию он ничего не печатает, пока не завершится выполнение всей страницы.

Есть ли какая-нибудь функция, которая может заставить его сразу вымываться?

Но не вызывая ob_end_flush() несколько раз, а это не то, что я хочу.

Надеюсь, вы, ребята, поняли меня?

Ответы [ 4 ]

8 голосов
/ 10 июня 2009

Если выходная буферизация включена, то сброс ее - единственный способ вывести что-либо в браузер. Если вы хотите вывести сразу, включите буферизацию вывода. Если это не в ваших силах, вы можете просто вызвать ob_end_flush () в srart вашего скрипта, который отключит буферизацию вывода. Однако нельзя пропустить некоторые сообщения, а некоторые - нет (без написания пользовательских функций echo / print)

вызов ob_end_flush () сбросит и отключит самый верхний выходной буфер. Чтобы убедиться, что все выходные буферы отключены и сбрасываются, вы можете легко сделать это:

while (@ob_end_flush());
6 голосов
/ 10 июня 2009

Это будет зависеть от вашего веб-сервера. Однако, вызов flush сбросит вывод любого текущего открытого буфера, как сказано на связанной странице:

flush () не влияет на схему буферизации вашего веб-сервера или браузера на стороне клиента. Таким образом, вы должны вызвать оба метода ob_flush () и flush () для очистки выходных буферов.

Некоторые серверы, особенно на Win32, по-прежнему будут буферизовать вывод из вашего скрипта, пока он не завершится, прежде чем передавать результаты в браузер.

Серверные модули для Apache, такие как mod_gzip, могут выполнять собственную буферизацию, что приведет к тому, что flush () не приведет к немедленной отправке данных клиенту.

1 голос
/ 10 июня 2009

Вы можете отключить буферизацию вывода на вашем сервере разработки / тестирования. Измените переменную output_buffering в файле конфигурации php.ini.

0 голосов
/ 11 июня 2009

ob_end_flush () выдаст уведомление, если оно используется вверху скрипта, когда нет буфера для очистки Это может быть проблемой, если вы планируете установить файлы cookie или заголовки. Я обнаружил, что это не влияет на буферизацию на моем общем сервере (Rackspace Reseller).

...