在评论中,我有一些关于以下脚本的概念性问题(我认为都是相关的)。该脚本工作正常。
<?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.netsleep()
函数的注释和这个 SO question 的解决方案中收集的。都没有提到为什么要包含\r\n
.
//编辑关于标题
如果我不添加\r\n
、HTML 标记和第二组\r\n
,脚本将无法在 Chrome 或 Safari 中正确执行(它只是一次转储所有值)。
此外,如果在 a 之前调用session_start()
它,则会引发错误:“无法发送会话缓存限制器 - 标头已发送”。