我有几个概念问题(我认为这些问题都相关)关于以下脚本中的注释。脚本运行良好。
<?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()
之前调用它,就会抛出一个错误:"无法发送会话缓存限制器 - 头信息已经被发送"。
php.ini
输出缓冲设置。\r\n
只是典型的Windows环境换行符。 - Phil