Hay varias formas en las que puede establecer el tiempo de espera para php-fpm. En /etc/php5/fpm/pool.d/www.conf
agregué esta línea:
request_terminate_timeout = 180
Además, /etc/nginx/sites-available/default
agregué la siguiente línea al bloque de ubicación del servidor en cuestión:
fastcgi_read_timeout 180;
El bloque de ubicación completo se ve así:
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;
}
Ahora simplemente reinicie php-fpm y nginx y no debería haber más tiempos de espera para las solicitudes que toman menos de 180 segundos.
fastcgi_read_timeout
en eselocation
bloque, aún se agota después de 60 segundos.location
bloque que maneja los scripts php, en lugar de docroot.Pruebe este enlace , tiene una mejor solución sobre cómo solucionar este problema. Entonces los pasos son:
nginx.conf
archivo ubicado en el/etc/nginx
directorio.Agregue este código a continuación en la
http {
sección:Nota: Si ya está presente, cambie los valores según.
Recargue Nginx y php5-fpm.
Si el error persiste, considere aumentar los valores.
fuente
/etc/nginx/sites-available/mysite.com
.No puede usar PHP para evitar un tiempo de espera emitido por nginx.
Para configurar nginx para permitir más tiempo, consulte la
proxy_read_timeout
directiva .fuente
La respuesta correcta es aumentar fastcgi_read_timeout en su configuración de Nginx.
¡Simple como eso!
fuente
Agregue estas variables al archivo nginx.conf:
Y luego reiniciar:
fuente
Hay tres tipos de tiempos de espera que pueden ocurrir en tal caso. Puede verse que cada respuesta se centra en un solo aspecto de estas posibilidades. Entonces, pensé en escribirlo para que alguien que visite aquí en el futuro no necesite verificar al azar cada respuesta y tener éxito sin saber cuál funcionó.
Entonces, las soluciones para cada problema son las siguientes.
tiempo de espera del cliente nginx
tiempo de espera del servidor proxy nginx
Entonces usa el que necesites. Quizás, en algunos casos, necesite todas estas configuraciones. Lo necesitaba.
fuente
Debe agregar una directiva nginx adicional (para
ngx_http_proxy_module
) ennginx.conf
, por ejemplo:Básicamente, la
proxy_read_timeout
directiva nginx cambia el tiempo de espera del proxy,FcgidIOTimeout
es para scripts que son silenciosos durante demasiado tiempo yFcgidBusyTimeout
es para scripts que tardan demasiado en ejecutarse.Además, si está utilizando la aplicación FastCGI, aumente también estas opciones:
Luego recargue nginx y PHP5-FPM.
Plesk
En Plesk, puede añadirlo en Configuración del servidor Web bajo directivas nginx adicionales .
Para FastCGI, verifique la Configuración del servidor web en Directivas adicionales para HTTP .
Consulte: ¿Cómo solucionar problemas de tiempo de espera de FastCGI en Plesk?
fuente
FcgidBusyTimeout
existe la variable solo para Apache?Dado que está utilizando php-fpm, debe aprovechar fastcgi_finish_request () para procesar las solicitudes que sabe que pueden demorar más.
fuente
Usar
set_time_limit(0)
es inútil cuando se usa php-fpm o un administrador de procesos similar.La conclusión es que no se debe usar
set_time_limit
cuando se usaphp-fpm
, para aumentar el tiempo de espera de ejecución, consulte este tutorial .fuente
¡Resuelvo este problema con config APACHE! Todos los métodos (en este tema) son incorrectos para mí ... Luego intento cambiar la configuración de apache:
Timeout 3600
¡Entonces mi guión funcionó!
fuente