使用 Apache2 流式传输内容形式管道

Stream content form pipe with Apache2

是否可以编写一个 Apache2 服务,在生成时将内容通过管道传输到客户端?

我想设置一个简单的 http 服务来触发构建并在编译进行时立即开始向客户端发送 stdout(gcc 东西)。目标是客户可以使用例如卷曲以测试构建:

curl http://myserver.com/testbuild -F "file=@mypkg.tar.gz"

并立即从服务器上的构建过程中查看标准输出。

我认为某种程度上是可能的using a cgi script, but the trick is to immediately get the stdout, bypassing the buffering. If you do not really need http as a transport protocol, why not use direct tcp streaming via netcat

在构建服务器上,您 运行 脚本如下:

#!/bin/bash
while true ; do
nc -l -p 8080 -e /path/to/buildscript
done

并且当任何客户端通过

连接时
nc <buildservername or ip> 8080

它会立即变得结实。

我的建议会有所不同(使用 jenkins 作为 ci 服务器,我什至在 cubietruck 上也这样做),但对于快速和小型的解决方案,它应该足够了。如果您需要 http,您甚至可以将 http header 添加到您的构建脚本中。