答案 0 :(得分:2)
如果发送标头并且未指定Content-Length
标头,PHP将默认发送分块响应。如果您熟悉HTTP规范,这是唯一合乎逻辑的事情,因为另一端的客户端需要知道您发送的HTTP消息何时结束,以便它可以停止读取。
如果您想手动执行此操作,则需要...
flush()
所以你可能会做类似以下的事情。这个想法是你需要手动发送你自己的标题并手动分块你自己的消息。但是,如果您只是不发送Content-Length
标头,那么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();