- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 CGI 中提供文件上传的实时解析,并在上传数据时在屏幕上显示数据。
但是,Apache2 似乎想要等待完整的 POST 完成,然后再向 CGI 应用程序发送任何内容。
如何强制 Apache2 停止将 POST 缓冲到我的 CGI 应用程序?
编辑
看起来它实际上是被缓冲的 CGI 的输出。我开始将数据流式传输到临时文件以观察其进度。那,我还有另一个问题。
1) 输出正在缓冲。我已经为 "!nogzip"、"nogzip"和 "!gzip"尝试了 SetEnvIf(和简单的 SetEnv),但没有成功(在 CGI 目录定义中)。
2) Apache2 似乎在 CGI 进程退出之前不会读取 CGI 的输出?我注意到我的 CGI 应用程序(是否刷新)在大约 80K 的“fwrite(..., stdout)”行上永久挂断。
编辑
好吧,Firefox 惹恼了我。如果我发送一个 150K 的文件,那么大约 80K 就没有 CGI 锁定。如果文件是 2G,则存在锁定。因此,Firefox 在尝试发送文件时没有读取服务器的输出......是否有任何标题或替代内容类型可以更改该行为?
编辑
好吧,我想大文件上的 CGI 输出锁定实际上并不重要。我不需要回显文件!我正在调试由调试辅助工具引起的问题。 :)
我想这足够了。谢谢!
最后说明
只是作为说明......我认为Apache2缓冲输入的原因是我总是有一个“内容长度”环境变量。我猜 FireFox 足够聪明,可以预先计算多部分表单上传的内容长度,而 Apache2 正在传递它。我认为 Apache2 正在缓冲输入并报告长度本身。
最佳答案
你确定这是输入被缓冲的问题吗?输出缓冲问题更为常见,如果您的调试方法类似于 print
,则可能无法将其与输入缓冲区分开来。回应。
(输出缓冲通常由脚本中未刷新的 stdout
或过滤器引起。通常的罪魁祸首是 DEFLATE
过滤器,它通常用于压缩所有 text/
响应,无论它们来自静态文件还是来自脚本。一般来说,压缩脚本的输出是个好主意,但副作用是它会导致响应被完全缓冲。如果您需要立即响应,则需要为该脚本关闭它或所有脚本,通过将 AddOutputFilterByType
的应用限制为特定的 <Directory>
s,或使用 mod_setenvif
设置 !nogzip
注释。)
同样,输入过滤器(再次包括 DEFLATE
)可能会导致 CGI 输入被缓冲,如果您正在使用任何输入过滤器。但它们的使用不那么广泛。
编辑:现在,只需注释掉您启用 deflate 过滤器的任何 httpd conf。一旦您对 IO 在没有它的情况下无缓冲感到满意,您就可以有选择地将其放回原处。
I notice that my CGI app (flushing or not) is hanging up permanently on a "fwrite(..., stdout)" line at around 80K.
关于Apache2 和 CGI - 如何防止 Apache 缓冲 POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196861/
嗨,我是一名学生,正在实习。不幸的是,我的公司要我用 C 编写 CGI 程序。我不知道他们为什么要使用它。无论如何,我必须在接下来的 2 个月内学习并应用它。我如何以及如何学习 CGI 编程。我有 2
CGI 脚本应该可以访问由 Web 服务器设置的环境变量列表。他们的名字是什么? 最佳答案 有关 CGI 规范,请参阅 RFC 3875,其中包含您需要的所有信息。 :-) 来自 RFC: met
CGI 是通用网关接口(interface)。顾名思义,它是所有事物的“通用”网关接口(interface)。从名字上看,它是如此琐碎和幼稚。我觉得我明白了这一点,每次遇到这个词都有这样的感觉。但坦白
我试图在 uhttpd 服务器 上执行 Cgi-Cpp 程序,该服务器运行 OpenWRT 安装。 Cgi 文件是 /www/cgi-bin/sample.cgi 并且也有执行权限。我正在尝试使用 H
我在目录下有一个 cpanel 帐户: /home/username/ 和一个文件: /home/username/public_html/ 这是index.php 其中包含:
我正在尝试修改我的 EasyPHP 以在 CGI 模式下运行。 根据此链接:http://www.easyvitools.com/phpserial/php_ser_reference.html我必须
有没有办法阻止 lighttpd 将 POST 缓冲到 CGI 可执行文件? 在我看来,所有请求在转发到 CGI 可执行文件之前都已完全缓冲在磁盘上,这使我无法以基于流的方式处理输入。 澄清一下,我只
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我正在设计一个应用程序,它将由 3-4 个服务组成,这些服务作为单独的进程运行并通过合适的 IPC 链接。该系统将有一个网络界面,我想使用那里的任何网络服务器。 应该在某个 URL 下访问 Web 界
这更多是为了理解 web 应用程序中的请求-响应机制。客户端向 Web 应用程序发送请求 (GET/POST)。 Web 应用程序有一个正在运行的应用程序服务器,该服务器用作应用程序特定程序的容器。我
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我遇到了这个问题:当我访问 URL“bobbabr.org”时,这是正常的,但是当我访问子域“ibobba.bobbabr.org”时,我被重定向到“/cgi-sys/defaultwebpage.c
我在虚拟机上运行的 Win 2k8 R2 上安装了 Mercurial 1.8.1、Python 2.6.6。我试过从 msi、源和使用 tortisehg 安装。命令行 Hg 工作正常,但在运行 h
我正在使用 cgi-bin 并显示一张 map ,其中包含来自 Postgres 数据库的一些数据。 但是,我需要引入一个输入,用户可以在其中选择一个日期,这个日期将从数据库中过滤结果。 我有输入并通
我目前正在尝试为我在带有 Ubuntu 的虚拟机上运行的实际本地网页创建一个简单的登录页面。 我创建了 LoginPage.html在位置 /var/www/html . 然后 HTML 文件调用 l
有谁知道如何配置 lighttpd 来处理普通的 CGI 可执行文件,在这种情况下是用 C 编写的?我已经编译了一个测试程序(test.cgi)并将它放在$HOME/public_html/cgi-b
我有一个 scriptA.cgi,它调用 scriptB.cgi。 scriptB.cgi 需要一个参数。 我都试过了在我尝试过的 scriptA.cgi 中: `perl -l scriptB.cg
我正在尝试让 Python、cgi 模块、ajax/javascript 组合工作。由于我的服务器访问的性质(基本上是租用的网站空间),我无法安装 django 或任何其他网络框架之类的东西。我现在坚
我在 Ubuntu 服务器上安装了标准的 Apache2。默认设置使用 ScriptAlias 将 /cgi-bin/ 引用到 /usr/lib/cgi-bin/。如果我将 Python CGI 脚本
我是一名优秀的程序员,十分优秀!