我正在尝试对CGI文件上传提供实时解析并将数据显示在屏幕上,但是Apache2似乎希望在向CGI应用程序发送任何内容之前等待完整的POST请求。
如何强制Apache2停止缓冲传输到我的CGI应用程序的POST请求?
编辑
实际上是CGI的输出被缓冲了。我开始将数据流式传输到临时文件以观察其进度。除此之外,我还有另一个问题。
1)输出被缓冲了。我尝试使用SetEnvIf(和仅使用SetEnv)来定义“!nogzip”,“nogzip”和“!gzip”(在CGI目录中),但没有成功。
2)Apache2似乎直到CGI进程退出才读取CGI的输出?我注意到我的CGI应用程序(无论是否刷新)在大约80K处永久卡住在“fwrite(...,stdout)”行。
编辑
好的,Firefox搞砸了。如果我发送一个150K的文件,那么在80K左右就不会出现CGI锁定。如果文件是2G,则会锁定。因此,Firefox在尝试发送文件时未读取服务器的输出...是否有任何头或备用内容类型可以更改该行为?
编辑
好的,我想在大文件上进行CGI输出锁定实际上并不重要。我不需要回显文件!我正在调试由调试工具引起的问题。:)
我想这样就足够好了。谢谢!
最终注释
只是一条注释...我认为Apache2缓冲输入的原因是我总是得到一个“Content-Length”环境变量。我想Firefox足够聪明以预计算多部分表单上传的内容长度,并且Apache2已将其传递。我以为Apache2正在缓冲输入并自己报告长度。