У меня есть несколько концептуальных вопросов (все связанные, я думаю) относительно следующего сценария, в комментариях.Скрипт работает отлично.
<?PHP
ob_start();
// Create string to overflow browser buffer ...?
$buffer = str_repeat(" ", 4096);
// Indicate new header / html content ...?
$buffer .= "\r\n<span></span>\r\n";
for ($i=0; $i<5; $i++) {
echo $buffer.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
Во-первых, зачем мне отправлять \r\n<tag>\r\n
в браузер?Я предполагаю, что это как-то связано с заголовками.
Во-вторых, зачем мне какой-то HTML в середине?
В-третьих, есть много примеров, в которых 256 байтов вместо 4096. Однакоскрипт не работает, если я использую 256. Являются ли эти примеры устаревшими, и будет ли этот номер снова изменяться в будущем?
// РЕДАКТИРОВАТЬ ОТНОСИТЕЛЬНО ССЫЛКИ ИСТОЧНИКА
Этот код был получен в основном из комментарий в php.net sleep()
функция и решение этого SO вопроса .Ни в одном из них не упоминается, почему включить \r\n
.
// РЕДАКТИРОВАТЬ ПО ЗАГОТОВКЕ
Если я не добавлю \r\n
, HTML-тег и второй набор \r\n
,Скрипт не будет работать должным образом в Chrome или Safari (он просто сбрасывает все значения сразу).
Кроме того, если он вызывается до session_start()
, выдается сообщение об ошибке: «Не удается отправить ограничитель кэша сеанса - заголовки уже отправлены».