ngnix+php 文件上传处理超时的解决办法
页面的超时时间同时受nginx和php的配置影响。
当是nginx影响到时,出错提醒如下图(图1):
=============================================================
而当是php的脚本最大执行时间(默认值为30秒)影响到时,出错的提醒如下图(图2):
nginx配置中fastcgi_read_timeout指定了nginx接受后端fastcgi响应请求超时时间,默认是60秒,如果fastcgi在规定时间内没有返回数据,就会直接返回图1的提示给客户端。
所以把php的脚本最大执行时间设置大一点,并在及时返回给nginx,这样就避免了超时的问题。
设置php的脚本最大执行时间使用这个函数:bool set_time_limit ( int $seconds
);
及时返回数据给nginx可以这么写:
if ($currentRow % 500 == 0) { // 每处理500行数据就返回一个空格并清空输出缓存
echo " ";
ob_flush();
flush();
}