Es gibt verschiedene Möglichkeiten, wie Sie das Timeout für php-fpm festlegen können. In habe /etc/php5/fpm/pool.d/www.conf
ich diese Zeile hinzugefügt:
request_terminate_timeout = 180
Außerdem habe /etc/nginx/sites-available/default
ich dem Standortblock des betreffenden Servers die folgende Zeile hinzugefügt:
fastcgi_read_timeout 180;
Der gesamte Standortblock sieht folgendermaßen aus:
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;
}
Starten Sie jetzt einfach php-fpm und nginx neu und es sollte keine Zeitüberschreitung mehr für Anfragen geben, die weniger als 180 Sekunden dauern.
fastcgi_read_timeout
in diesemlocation
Block eingestellt habe.location
Block festlegen , der PHP-Skripte verarbeitet, und nicht in der Docroot.Versuchen Sie diesen Link , es hat eine bessere Lösung, wie dies behoben werden kann. Die Schritte sind also:
nginx.conf
Datei im/etc/nginx
Verzeichnis.Fügen Sie diesen Code unten im
http {
Abschnitt hinzu:Hinweis: Wenn es bereits vorhanden ist, ändern Sie die Werte entsprechend.
Laden Sie Nginx und php5-fpm neu.
Wenn der Fehler weiterhin besteht, sollten Sie die Werte erhöhen.
quelle
/etc/nginx/sites-available/mysite.com
.Sie können PHP nicht verwenden, um ein von nginx ausgegebenes Timeout zu verhindern.
Informationen zum Konfigurieren von nginx für mehr Zeit finden Sie in der
proxy_read_timeout
Direktive .quelle
Die richtige Antwort ist das Erhöhen von fastcgi_read_timeout in Ihrer Nginx-Konfiguration.
So einfach ist das!
quelle
Fügen Sie diese Variablen zur Datei nginx.conf hinzu:
Und dann neu starten:
quelle
In einem solchen Fall können drei Arten von Zeitüberschreitungen auftreten. Es ist ersichtlich, dass sich jede Antwort nur auf einen Aspekt dieser Möglichkeiten konzentriert. Also dachte ich, ich sollte es aufschreiben, damit jemand, der hier in Zukunft hier ist, nicht jede Antwort nach dem Zufallsprinzip überprüfen und Erfolg haben muss, ohne zu wissen, welche funktioniert.
Die Korrekturen für jedes Problem lauten also wie folgt.
nginx Client Timeout
Timeout für Nginx-Proxyserver
Verwenden Sie also die, die Sie benötigen. In einigen Fällen benötigen Sie möglicherweise alle diese Konfigurationen. Ich brauchte.
quelle
Sie müssen eine zusätzliche Nginx-Direktive (für
ngx_http_proxy_module
) hinzufügennginx.conf
, z.Grundsätzlich
proxy_read_timeout
ändert die Nginx- Direktive das Proxy-Timeout. DiesFcgidIOTimeout
gilt für Skripte, derenFcgidBusyTimeout
Ausführung zu lang ist, und für Skripte, deren Ausführung zu lange dauert.Wenn Sie die FastCGI-Anwendung verwenden, erhöhen Sie auch diese Optionen:
Laden Sie dann Nginx und PHP5-FPM neu.
Plesk
In Plesk können Sie es in den Webserver-Einstellungen unter Zusätzliche Nginx-Anweisungen hinzufügen .
Für FastCGI überprüfen Sie die Webserver-Einstellungen unter Zusätzliche Anweisungen für HTTP .
Siehe: Wie behebe ich FastCGI-Timeout-Probleme in Plesk?
quelle
FcgidBusyTimeout
Variable nicht nur für Apache vorhanden?Da Sie php-fpm verwenden, sollten Sie fastcgi_finish_request () nutzen, um Anforderungen zu verarbeiten, von denen Sie wissen, dass sie länger dauern können.
quelle
Die Verwendung
set_time_limit(0)
ist nutzlos, wenn Sie php-fpm oder einen ähnlichen Prozessmanager verwenden.Summa summarum ist nicht auf den Einsatz
set_time_limit
bei der Verwendungphp-fpm
, Ihre Ausführungs - Timeout zu erhöhen, lesen Sie in diesem Tutorial .quelle
Ich löse dieses Problem mit config APACHE! Alle Methoden (in diesem Thema) sind für mich falsch ... Dann versuche ich chanche apache config:
Timeout 3600
Dann hat mein Skript funktioniert!
quelle