Py学习  »  Jquery

jQuery/PHP文件上载在99%时重新启动,然后返回超时

Fabius • 4 年前 • 842 次点击  

我在运行在EC2实例上的AMI Linux上上传jQuery/PHP文件时遇到了一些问题。 我试着用 this 还有其他几个插件(只是为了确保问题不出在插件本身),结果是一样的。 Request Timeout ). 请求超时 . access_log :

12.34.56.78--[02/Jul/2019:15:50:09+0000]“POST/uploader/demo/backend/upload.php HTTP/1.1”408 221

12.34.56.78--[02/Jul/2019:15:50:31+0000]“POST/uploader/demo/backend/upload.php HTTP/1.1”408 221

408 Request Timeout 在两行上(事实上,上载会重新启动一次)。上传需要22或23秒(从日志中可以看到)。

我就是这样设置的 php.ini (我使用的是PHP 7.1fpm):

max_execution_time = 360
max_input_time = 360
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M

phpinfo() 显示这些值已正确应用。 我也试着用 set_time_limit(0) 并在 upload.php 归档 ini_set() ,但没有改变。 上传目录有适当的权限,事实上9.3MB的PDF文件上传正确,没有错误。

在我的一次尝试中,我还尝试设置这些apache指令:

KeepAlive On
KeepAliveTimeout 360
TimeOut 360

唯一的结果是,上传进度保持在99%,并重新启动了几次,而不是只重新启动一次。

现在我已经没有什么想法了,大多数的解决方案都与 php.ini文件 在我的情况下正确应用的设置。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56575
 
842 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Fabius
Reply   •   1 楼
Fabius    4 年前

经过几个小时的尝试,我一提出问题,就找到了答案。这可能对任何有同样问题的人都有用。如果我的问题中列出的其他所有问题都不起作用,可能是由于 mod_reqtimeout 我只是创建了一个名为: /etc/httpd/conf.d/mod_reqtimeout.conf 把这个放进去:

<IfModule reqtimeout_module>
  RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>

正如上面链接的apache文档所建议的那样。然后我重新启动了apache,上传率达到了100%,没有问题。

mod_security 当我尝试使用一个60MB的PDF文件时,已经参与了这个过程。我必须设置以下设置以匹配在中设置的100MB限制 php.ini ,内部 /etc/httpd/conf.d/mod_security.conf :

SecRequestBodyLimit 100000000