当通过XHR流式传输文件到在Apache Web服务器上运行的PHP脚本时,某些东西会缓冲整个POST正文,然后在整个文件上传完毕后将其交给PHP。这非常消耗内存且不理想。我有另一台配置大致相同的服务器,它直接将POST数据流式传输到PHP脚本,从而导致内存使用量较低。但是我无法找出配置差异所在。是否有任何明显的设置(例如“BufferPostBody Yes”)需要查找?
到目前为止,我尝试了以下方法: 禁用mod_security 通过HTTP而不是HTTPs发送文件 检查Apache日志、PHP日志和syslog。没有错误或警告。
我如何测试此行为: 通过JS上传大文件(235M)通过XHR流式传输。一旦请求开始,PHP应输出“performing upload”。但实际情况是只有在整个文件通过POST上传后才会看到“performing upload”。
坏服务器上加载的模块列表如下: core mod_log_config mod_logio prefork 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_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status mod_unique_id
到目前为止,我尝试了以下方法: 禁用mod_security 通过HTTP而不是HTTPs发送文件 检查Apache日志、PHP日志和syslog。没有错误或警告。
我如何测试此行为: 通过JS上传大文件(235M)通过XHR流式传输。一旦请求开始,PHP应输出“performing upload”。但实际情况是只有在整个文件通过POST上传后才会看到“performing upload”。
坏服务器上加载的模块列表如下: core mod_log_config mod_logio prefork 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_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status mod_unique_id
enable_post_data_reading
ini设置,PHP将不会填充$_POST
和$_FILES
,您需要自己处理POST数据。 - hakrePUT
将大致实现您在此处想要的内容;PHP 可以从php://input
中获取。 - Ja͢ck