По умолчанию он ничего не распечатает, пока вся страница не закончит выполнение.
Есть ли какая-нибудь функция, которая может сразу же очистить ее?
Но не по вызову ob_end_flush()
несколько раз, чего я не хочу.
Надеюсь, вы меня приняли?
Если буферизация вывода включена, то очистка является единственным способом вывода чего-либо в браузер. Если вы хотите вывести сразу, а затем буферизацию вывода. Если это не под вашим контролем, вы можете просто вызвать ob_end_flush () в srart вашего скрипта, который отключит буферизацию вывода. Однако нет возможности передавать некоторые сообщения, а некоторые нет (без написания пользовательских функций эхо / печати)
вызов ob_end_flush () будет отключен и выключен верхний выходной буфер. Чтобы убедиться, что все выходные буферы отключены и сброшены, вы можете легко сделать это:
while (@ob_end_flush());
Это будет зависеть от вашего веб-сервера. Вызов флеша будет очищать вывод любого текущего буфера, однако, как говорится на связанной странице:
flush () не влияет на схему буферизации вашего веб-сервера или браузера на стороне клиента. Таким образом, вам нужно вызвать оба объекта ob_flush () и flush (), чтобы очистить выходные буферы.
Несколько серверов, особенно на Win32, все равно будут буферизовать вывод из вашего скрипта до тех пор, пока он не завершится до передачи результатов в браузер.
Серверные модули для Apache, такие как mod_gzip, могут выполнять собственную буферизацию, что приведет к тому, что flush () не приведет к немедленному отправке данных клиенту.
Вы можете отключить буферизацию вывода на вашем сервере разработки / тестирования. Измените переменную output_buffering в файле конфигурации php.ini.
ob_end_flush () выдает уведомление, если оно используется в верхней части скрипта, когда буфер отсутствует. Это может быть проблемой, если вы планируете устанавливать файлы cookie или заголовки. Я обнаружил, что это не повлияло на буферизацию на моем общем сервере (Rackspace Reseller).