вы можете использовать функцию вровень(), чтобы попытаться очистить данные обратно в браузер.
описание от php.net:
промывает буферы записи из PHP и все, что базовая РНР использует (CGI, веб-сервер, и т.д.). Это пытается вытолкнуть текущий вывод всего в браузер с несколькими оговорками.
Возможно, flush() не сможет переопределить схему буферизации вашего сервера и не оказывает никакого влияния на любую клиентскую буферизацию в браузере . Он также не влияет на выходную буферизацию пользовательского пространства PHP . Это означает, что вам нужно будет вызвать оба ob_flush() и flush(), чтобы очистить выходные выходные буферы, если вы их используете.
пример код, протестирован на хромированные 31.0.1650.57 (Linux), Safari (6.0.4) (OSX):
примечания: следует ли показывать раскрасневшийся выход до браузера (обычно в зависимости от количества данных в ответе). например, Safari (6.0.4) хочет 512 байт данных перед выводом данных в браузер. Вы можете обойти это, сделав что-то вроде заполнения от 512 символов до начала вывода.
<?php
header('Content-type: text/html; charset=utf-8');
echo str_repeat(" ",512); //pad the buffer with data (in case browser needs it)
while (true){
//write go to the browser every 2 seconds.. forever
echo "go...<br/>";
ob_flush();
flush();
sleep(2);
}
?>
подробнее здесь http://us1.php.net/manual/en/function.flush.php
No. PHP должен все просчитать, прежде чем он может оказать HTML. Theres никак не может создать что-то подобное в PHP динамически. –
@YUNOWORK Не правда. PHP не должен ничего ждать, он просто выводит значения по мере их появления. * Веб-сервер * обычно является буферизацией ответа. – deceze
OP: HTTP является _synchronous_, и любой вывод будет отправлен клиенту только после выполнения сценария. Это не похоже на CLI-режим вообще –