답변:
php-fpm에 대한 시간 제한을 설정할 수있는 몇 가지 방법이 있습니다. 에서 /etc/php5/fpm/pool.d/www.conf
나는이 줄을 추가 :
request_terminate_timeout = 180
또한 /etc/nginx/sites-available/default
문제의 서버 위치 블록에 다음 줄을 추가했습니다.
fastcgi_read_timeout 180;
전체 위치 블록은 다음과 같습니다.
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 180;
include fastcgi_params;
}
이제 php-fpm 및 nginx를 다시 시작하면 180 초 미만의 요청에 대해 더 이상 시간 초과가 없어야합니다.
fastcgi_read_timeout
그 location
블록 에서 무엇을 설정하더라도 60 초 후에 시간이 초과됩니다.
location
하는 경우 docroot가 아닌 php 스크립트를 처리 하는 블록 에서이를 설정해야합니다 .
이 링크를 시도하면이 문제를 해결하는 방법에 대한 더 나은 솔루션이 있습니다. 따라서 단계는 다음과 같습니다.
nginx.conf
에있는 파일을 엽니 다 /etc/nginx
.http {
섹션 아래에 코드를 추가 하십시오.
client_header_timeout 3000;
client_body_timeout 3000;
fastcgi_read_timeout 3000;
client_max_body_size 32m;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 128k;
참고 : 이미있는 경우 값을 변경하십시오.
Nginx 및 php5-fpm을 다시로드합니다.
$ service nginx reload
$ service php5-fpm reload
오류가 지속되면 값을 늘리십시오.
/etc/nginx/sites-available/mysite.com
.
nginx가 발행 한 시간 초과를 방지하기 위해 PHP를 사용할 수 없습니다.
더 많은 시간을 허용하도록 nginx를 구성하려면 proxy_read_timeout
지시문을 참조하십시오 .
이러한 경우 발생할 수있는 세 가지 종류의 시간 초과가 있습니다. 각 답변은 이러한 가능성의 한 측면에만 초점을 맞추고 있음을 알 수 있습니다. 그래서 앞으로 이곳을 방문하는 사람이 답을 무작위로 확인하고 어느 것이 효과가 있는지 모른 채 성공을 거둘 필요가 없도록 적어 두려고했습니다.
따라서 각 문제에 대한 수정 사항은 다음과 같습니다.
$.ajax({
url: "test.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
//do something
},
timeout: 3000 // sets timeout to 3 seconds
});
nginx 클라이언트 시간 초과
http{
#in seconds
fastcgi_read_timeout 600;
client_header_timeout 600;
client_body_timeout 600;
}
nginx 프록시 서버 시간 초과
http{
#Time to wait for the replying server
proxy_read_timeout 600s;
}
따라서 필요한 것을 사용하십시오. 경우에 따라 이러한 모든 구성이 필요할 수 있습니다. 내가 필요.
에 추가 nginx 지시문 (for ngx_http_proxy_module
) 을 추가해야합니다 nginx.conf
. 예 :
proxy_read_timeout 300;
기본적으로 nginx proxy_read_timeout
지시문은 프록시 시간 제한을 변경하고, FcgidIOTimeout
너무 긴 스크립트를위한 것입니다.FcgidBusyTimeout
하고 실행하는 데 너무 오래 걸리는 스크립트를위한 것입니다.
또한 FastCGI 응용 프로그램을 사용하는 경우 다음 옵션도 늘립니다.
FcgidBusyTimeout 300
FcgidIOTimeout 250
그런 다음 nginx 및 PHP5-FPM을 다시로드하십시오.
Plesk에서는 추가 nginx 지시문 아래의 웹 서버 설정 에 추가 할 수 있습니다 .
FastCGI의 경우 HTTP에 대한 추가 지시문 아래의 웹 서버 설정 에서 확인하십시오 .
FcgidBusyTimeout
변수는 Apache에만 존재 하지 않습니까?
set_time_limit(0)
php-fpm 또는 유사한 프로세스 관리자를 사용할 때 사용 은 쓸모가 없습니다.
요점은를 사용할 set_time_limit
때 사용 하지 않는 php-fpm
것입니다. 실행 시간 초과를 늘리려면이 자습서를 확인하십시오 .
나는 config APACHE 로이 문제를 해결합니다! (이 주제의) 모든 방법이 잘못되었습니다 ... 그런 다음 chanche apache config를 시도합니다.
Timeout 3600
그런 다음 내 스크립트가 작동했습니다!