gpt4 book ai didi

PHP 缓冲区为什么\r\n

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:01 27 4
gpt4 key购买 nike

关于以下脚本,我在评论中有一些概念性问题(我认为都是相关的)。该脚本运行良好。

<?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,脚本将无法运行。这些示例是否已过时,以后这个数字会再次更改吗?

//编辑源链接

此代码主要来自 commentary in php.net sleep() functionthe solution to this SO question .都没有提到为什么要包含 \r\n .

//编辑标题

如果我不添加 \r\n 、一个 HTML 标签和第二组 \r\n ,脚本将无法在 Chrome 或 Safari 中正确执行(它只会一次转储所有值)。

此外,如果在 session_start() 之前调用它,它会抛出错误:“无法发送 session 缓存限制器 - header 已发送”。

最佳答案

First, why do I need to send the \r\n<tag>\r\n to the browser? I assume it has something to do with headers.

Second, why do I need some HTML in the middle?

通常浏览器必须等到他们获取了整个响应才能呈现(想想 XML 在最后一个字符之前都是有效的)。但由于这会造成糟糕的用户体验,因此大多数浏览器会尽早开始解析和呈现内容。

这里的 HTML 片段可能是浏览器实际构建 DOM 并开始渲染的发起者。

Third, there are many examples that use 256 bytes instead of 4096. However, the script doesn't work if I use 256. Are these examples outdated, and will this number change again in the future?

由于手册暗示 Web 服务器中可能包含一些进一步的缓冲,这可能是试图溢出那些缓冲区,它们也被刷新以达到预期的效果。

关于PHP 缓冲区为什么\r\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4191349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com