我知道只需在输出中引入 sleep()
即可在 PHP 中生成分块响应。
但是否也可以生成 Trailer PHP 中的 HTTP 部分?如果不能,一般在 Apache 2.2 中是否可行?
我需要它来进行测试。
最佳答案
如果发送 header 且未指定 Content-Length
header ,PHP 将默认发送分块响应。如果您熟悉 HTTP 规范,这是唯一合乎逻辑的做法,因为另一端的客户端需要知道您发送的 HTTP 消息何时结束,以便它可以停止读取。
如果您想手动执行此操作,则需要...
- 自己发送适当的 header 并调用
flush()
- 手动输出分块的 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/