Как было предложено в ответе на предыдущий вопрос (Внешний Oauth PHP: как отображать ожидающее сообщение во время ожидания обратного вызова (без использования AJAX) ), я использую кодировку передачи: chunked для отображения ожидающего сообщения во время выполнения некоторых задач. Мои первые попытки не увенчались успехом, и я нашел решение в этом вопросе "Transfer-Encoding: chunked" заголовок в PHP. Существует «заполнение» из 1024 пробелов. Без этой прокладки не работает. Я гуглил, но не могу найти, для чего это дополнение. Вот пример кода (из соответствующего вопроса).
<?php
header('Content-Encoding', 'chunked');
header('Transfer-Encoding', 'chunked');
header('Content-Type', 'text/html');
header('Connection', 'keep-alive');
ob_flush();
flush();
$p = ""; //padding
for ($i=0; $i < 1024; $i++) {
$p .= " ";
};
echo $p;
ob_flush();
flush();
for ($i = 0; $i < 10000; $i++) {
echo "string";
ob_flush();
flush();
sleep(2);
}
?>
Есть ли у кого-нибудь объяснение, почему он работает с «заполнением» и не работает без него?