Il existe plusieurs façons de définir le délai d'expiration pour php-fpm. Dans /etc/php5/fpm/pool.d/www.conf
j'ai ajouté cette ligne:
request_terminate_timeout = 180
De plus, /etc/nginx/sites-available/default
j'ai ajouté la ligne suivante au bloc d'emplacement du serveur en question:
fastcgi_read_timeout 180;
L'ensemble du bloc d'emplacement ressemble à ceci:
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;
}
Maintenant, redémarrez simplement php-fpm et nginx et il ne devrait plus y avoir de délais d'attente pour les requêtes prenant moins de 180 secondes.
fastcgi_read_timeout
dans celocation
bloc, il expire toujours après 60 secondes.location
bloc qui gère les scripts php, plutôt que dans la docroot.Essayez ce lien , il a une meilleure solution pour résoudre ce problème. Les étapes sont donc:
nginx.conf
fichier situé dans le/etc/nginx
répertoire.Ajoutez ce morceau de code ci-dessous dans la
http {
section:Remarque: s'il est déjà présent, modifiez les valeurs en fonction.
Rechargez Nginx et php5-fpm.
Si l'erreur persiste, envisagez d'augmenter les valeurs.
la source
/etc/nginx/sites-available/mysite.com
.Vous ne pouvez pas utiliser PHP pour empêcher un timeout émis par nginx.
Pour configurer nginx afin de laisser plus de temps, consultez la
proxy_read_timeout
directive .la source
La bonne réponse est d'augmenter fastcgi_read_timeout dans votre configuration Nginx.
Aussi simple que cela!
la source
Ajoutez ces variables au fichier nginx.conf:
Et puis redémarrez:
la source
Il existe trois types de délais d'expiration qui peuvent se produire dans un tel cas. On voit que chaque réponse est centrée sur un seul aspect de ces possibilités. J'ai donc pensé à l'écrire pour que quelqu'un qui se rende ici à l'avenir n'ait pas besoin de vérifier chaque réponse au hasard et d'obtenir du succès sans savoir laquelle a fonctionné.
Les correctifs pour chaque problème sont donc les suivants.
Délai d'expiration du client nginx
Délai d'expiration du serveur proxy nginx
Alors utilisez celui dont vous avez besoin. Peut-être que dans certains cas, vous avez besoin de toutes ces configurations. J'ai eu besoin.
la source
Vous devez ajouter une directive nginx supplémentaire (for
ngx_http_proxy_module
) dansnginx.conf
, par exemple:Fondamentalement, la
proxy_read_timeout
directive nginx modifie le délai d'expiration du proxy,FcgidIOTimeout
c'est pour les scripts qui sont silencieux trop longtemps, etFcgidBusyTimeout
aux scripts dont l'exécution prend trop de temps.De plus, si vous utilisez l'application FastCGI, augmentez également ces options:
Rechargez ensuite nginx et PHP5-FPM.
Plesk
Dans Plesk, vous pouvez l'ajouter dans les paramètres du serveur Web sous Directives nginx supplémentaires .
Pour FastCGI, vérifiez dans Paramètres du serveur Web sous Directives supplémentaires pour HTTP .
Voir: Comment résoudre les problèmes de délai d'expiration FastCGI dans Plesk?
la source
FcgidBusyTimeout
variable n'existe- t-elle pas uniquement pour Apache?Puisque vous utilisez php-fpm, vous devriez profiter de fastcgi_finish_request () pour traiter les requêtes dont vous savez qu'elles peuvent prendre plus de temps.
la source
L'utilisation
set_time_limit(0)
est inutile lors de l'utilisation de php-fpm ou d'un gestionnaire de processus similaire.Bottomline n'est pas à utiliser
set_time_limit
lors de l'utilisationphp-fpm
, pour augmenter votre délai d'exécution, consultez ce tutoriel .la source
Je résous ce problème avec la config APACHE! Toutes les méthodes (dans ce sujet) sont incorrectes pour moi ... Ensuite, j'essaye la configuration de chanche apache:
Timeout 3600
Ensuite, mon script a fonctionné!
la source