php - 如何在 Apache/PHP 中使用预告片生成分块响应?

标签 php apache http chunked-encoding

我知道只需在输出中引入 sleep() 即可在 PHP 中生成分块响应。

但是否也可以生成 Trailer PHP 中的 HTTP 部分?如果不能,一般在 Apache 2.2 中是否可行?

我需要它来进行测试。

最佳答案

如果发送 header 且未指定 Content-Length header ,PHP 将默认发送分块响应。如果您熟悉 HTTP 规范,这是唯一合乎逻辑的做法,因为另一端的客户端需要知道您发送的 HTTP 消息何时结束,以便它可以停止读取。

如果您想手动执行此操作,则需要...

  1. 自己发送适当的 header 并调用 flush()
  2. 手动输出分块的 HTTP 消息

所以你可能会做类似下面的事情。这个想法是您需要手动发送自己的 header 并手动分块您自己的消息。但是,如果您只是不发送 Content-Length header ,PHP 会默认为您发送分块消息。

header("Transfer-encoding: chunked");
header("Trailer: X-My-Trailer-Header");
flush();

echo dechex(strlen($myChunk)) . "\r\n";
echo $myChunk;
echo "\r\n";
flush();

echo "0\r\n";
flush();

echo "X-My-Trailer-Header: some-value\r\n";
flush();

关于php - 如何在 Apache/PHP 中使用预告片生成分块响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820138/

相关文章:

google-chrome - 如何在 puppeteer 中发送 POST 请求?

iphone - 从我的 iPhone 抓取 HTTP 请求包

javascript - 从 php 数组到 javascript(初学者)

php - 获取csv文件中的列名

php - 用 PHP 覆盖 CSS 不显示相同的结果

django - 无法使用 Apache 导入/没有名为 Django 的模块错误

javascript - 在图表中显示来自 mysql 的日期

php - 在这种情况下如何循环查询?

regex - 如何编写htaccess将子域重定向到https

ruby - 我正在检查脚本是否有异常但出现了一些错误任何人都可以帮忙吗?