Existem várias maneiras de definir o tempo limite para php-fpm. Em /etc/php5/fpm/pool.d/www.conf
eu adicionei esta linha:
request_terminate_timeout = 180
Além disso, /etc/nginx/sites-available/default
adicionei a seguinte linha ao bloco de localização do servidor em questão:
fastcgi_read_timeout 180;
Todo o bloco de localização se parece com isto:
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;
}
Agora apenas reinicie o php-fpm e o nginx e não deve haver mais tempo limite para solicitações que durem menos de 180 segundos.
fastcgi_read_timeout
nesselocation
bloco, ele ainda atinge o tempo limite após 60 segundos.location
bloco que lida com os scripts php, ao invés do docroot.Experimente este link , tem uma solução melhor de como consertar isso. Portanto, as etapas são:
nginx.conf
arquivo localizado no/etc/nginx
diretório.Adicione o código abaixo na
http {
seção:Nota: Se já estiver presente, altere os valores de acordo.
Recarregue o Nginx e php5-fpm.
Se o erro persistir, considere aumentar os valores.
fonte
/etc/nginx/sites-available/mysite.com
.Você não pode usar o PHP para evitar um timeout emitido pelo nginx.
Para configurar o nginx para permitir mais tempo, consulte a
proxy_read_timeout
diretiva .fonte
A resposta correta é aumentar fastcgi_read_timeout em sua configuração Nginx.
Simples assim!
fonte
Adicione essas variáveis ao arquivo nginx.conf:
E então reinicie:
fonte
Existem três tipos de timeouts que podem ocorrer em tal caso. Percebe-se que cada resposta está focada em apenas um aspecto dessas possibilidades. Então, pensei em anotar para que alguém que visitar aqui no futuro não precise verificar aleatoriamente cada resposta e obter sucesso sem saber qual funcionou.
Portanto, as correções para cada problema são as seguintes.
Tempo limite do cliente nginx
tempo limite do servidor proxy nginx
Portanto, use o que você precisa. Talvez em alguns casos, você precise de todas essas configurações. Eu precisei.
fonte
Você precisa adicionar uma diretiva nginx extra (para
ngx_http_proxy_module
) emnginx.conf
, por exemplo:Basicamente, a
proxy_read_timeout
diretiva nginx altera o tempo limite do proxy,FcgidIOTimeout
é para scripts que são silenciosos por muito tempo eFcgidBusyTimeout
é para scripts que demoram muito para executar.Além disso, se você estiver usando o aplicativo FastCGI, aumente essas opções também:
Em seguida, recarregue o nginx e o PHP5-FPM.
Plesk
No Plesk, você pode adicioná-lo nas Configurações do Servidor da Web em Diretivas adicionais do nginx .
Para FastCGI, verifique em Configurações do servidor da Web em Diretivas adicionais para HTTP .
Veja: Como corrigir problemas de tempo limite do FastCGI no Plesk?
fonte
FcgidBusyTimeout
variável não existe apenas para o Apache?Já que você está usando php-fpm, você deve tirar vantagem de fastcgi_finish_request () para processar solicitações que você sabe que podem demorar mais.
fonte
Usando
set_time_limit(0)
é inútil quando se usa php-fpm ou gerenciador de processo semelhante.Bottomline não é para usar
set_time_limit
ao usarphp-fpm
, para aumentar seu tempo limite de execução, verifique este tutorial .fonte
Eu resolvo esse problema com o config APACHE! Todos os métodos (neste tópico) estão incorretos para mim ... Então eu tento chanche apache config:
Timeout 3600
Então meu script funcionou!
fonte