首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使Apache停止缓冲POST数据?

如何使Apache停止缓冲POST数据?
EN

Stack Overflow用户
提问于 2013-09-06 18:57:08
回答 2查看 2.2K关注 0票数 4

当通过XHR流将文件上传到运行在Apache When服务器上的PHP脚本时,会有一些东西在缓冲整个POST正文,然后在上传完整个文件后将其传递给PHP。

这是非常内存密集型的,不是最优的。我有另一台服务器,配置方式大致相同,它直接将POST数据流到PHP脚本,从而导致内存使用率低。

我一辈子都找不出配置上的差别。有什么明显的东西像"BufferPostBody是的“这样的设置需要我去寻找吗?

我到目前为止尝试过的

禁用通过HTTP发送文件的mod_security,而不是检查apache、php日志、syslog的HTTPs。没有出现错误或警告。

我是如何测试行为

开始上传通过JS的大文件(235米)通过XHR流。PHP应该在请求一开始就输出“执行上载”。相反,只有在通过POST上传完整个文件之后,才能看到“执行上载”行。

坏服务器上加载的模块列表是:

核心mod_log_config mod_logio http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_mime mod_negotiation mod_env mod_negotiation mod_env mod_env mod_negotiation mod_env mod_negotiation mod_env mod_env mod_negotiation mod_env mod_negotiation mod_env mod_mime mod_env mod_negotiation mod_env mod_env mod_negotiation mod_env mod_negotiation mod_env mod_env mod_mime mod_env mod_env mod_mime mod_env mod_negotiation mod_env mod_negotiation mod_env mod_env mod_negotiation mod_env

EN

回答 2

Stack Overflow用户

发布于 2015-01-21 12:53:14

您需要将PHP设置enable_post_data_reading设置为Off。我发现这是PHP请求缓冲的原因,因此不允许流像流一样工作。

http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading

这将禁用$_POST$_FILES变量,因此,如果您在应用程序的其余部分使用它们,可能会出现问题。

为了解决这个问题,我有一个Apache配置,只能在特定条件下启用它。

在这种情况下,位置和内容类型:

代码语言:javascript
运行
复制
<Location /uri/to/path/file.php>
    <If "req('Content-Type') = 'application/customfiletype'">
        php_value enable_post_data_reading Off
    </If>
</Location>
票数 3
EN

Stack Overflow用户

发布于 2014-01-04 15:59:38

PHP假定整个POST请求是可用的,所以我相信,在启动PHP之前等待post完成是每个设计的结果。而且可能是不可避免的。

您可以做的是在浏览器中使用HTML5文件API拆分文件,然后将文件块一个一个地发送,每个文件块在自己的POST请求中发送。

如何使用HTML5:http://www.html5rocks.com/en/tutorials/file/dndfiles/在浏览器中拆分文件的示例:

浏览器对HTML5文件API:http://caniuse.com/#feat=fileapi的支持(在fx IE<10 :( )中不工作)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18664696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档