如何在 Apache httpd 中强制刷新 HTTP headers?

How to forcefully flush HTTP headers in Apache httpd?

我需要为客户端定期生成 HTTP headers,这些 headers 需要在创建一个 header 后直接刷新到客户端。我等不及 body 或其他任何东西,我创建了一个 header 并且我希望 Apache httpd 将它发送到客户端。

我已经尝试过使用自动刷新、手动刷新、大约 8k 数据的大型 header 数据、禁用的 deflate 模块以及任何可能的方式,但 httpd 似乎忽略了我的愿望,直到所有 headers 被创建,然后才刷新它们。根据我生成 headers 的速度,httpd 进程甚至将内存增加到数百兆字节,因此似乎缓冲了所有 headers。

有什么方法可以让 httpd 刷新个人 header 还是不可能?

答案是使用 NPH-scripts,它默认绕过 Web 服务器的缓冲区。需要将脚本命名为 nph-* 并且通常 Web 服务器应该停止缓冲 headers 并在打印时直接发送它们以及它们的状态。这适用于我的情况,但使用 Apache httpd 需要小心:

Apache2 sends two HTTP headers with a mapped "nph-" CGI