NGINX 504 Timeout – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self NGINX 504 Timeout Wed, 07 Aug 19 08:33:39 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754945#m1754945 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754945#m1754945 <p>Hallo zusammen,</p> <p>ich habe ein Problem mit einem NGINX 504 Timeout.</p> <p>Ich habe ein PHP Script, welches jede Nach bei Cron gestartet wird. Leider wird das Script nicht beendet, weil es wohl ein 504 Timeout gibt. Ich habe bereits alle mögliche Parameter erhöht, allerdings ändert sich da nichts...jemand eine Idee?</p> <p>Folgende Werte habe ich bereits erhöht</p> <pre><code class="block">proxy_connect_timeout 3600; proxy_send_timeout 3600; proxy_read_timeout 3600; send_timeout 3600; </code></pre> <pre><code class="block">fastcgi_read_timeout 3600; </code></pre> <pre><code class="block">request_terminate_timeout = 3600 </code></pre> <pre><code class="block">max_execution_time = 3600 </code></pre> NGINX 504 Timeout Wed, 07 Aug 19 09:07:52 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754946#m1754946 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754946#m1754946 <p>Hi,</p> <blockquote> <p>Ich habe ein PHP Script, welches jede Nach bei Cron gestartet wird. Leider wird das Script nicht beendet, weil es wohl ein 504 Timeout gibt.</p> </blockquote> <p>Hm. Muß das Script denn per http(s) gestartet werden? Oder könnte das auch direkt per <code>php deinscript.php</code> laufen? Dann wäre der nginx aus dem Spiel …</p> <p>cu,<br> Andreas a/k/a MudGuard</p> NGINX 504 Timeout Wed, 07 Aug 19 09:34:53 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754949#m1754949 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754949#m1754949 <p>Also ich starte es über localhost, aber nur über PHP geht leider nicht :/</p> NGINX 504 Timeout Wed, 07 Aug 19 10:02:43 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754952#m1754952 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754952#m1754952 <p>Hello,</p> <blockquote> <blockquote> <p>Ich habe ein PHP Script, welches jede Nach bei Cron gestartet wird. Leider wird das Script nicht beendet, weil es wohl ein 504 Timeout gibt.</p> </blockquote> <p>Hm. Muß das Script denn per http(s) gestartet werden? Oder könnte das auch direkt per <code>php deinscript.php</code> laufen? Dann wäre der nginx aus dem Spiel …</p> </blockquote> <p>Bei solch langen Laufzeiten könnte man das Script auf einem Linuxhost auch per https-Request (PHP-Startscript) aufrufen und in den Hintergrund stellen. Dann ist der http-Request auch schnell fertig.</p> <p>Die Prozess-ID sollte man sich in einer Kontrolldatei merken und vom Langläufer dort am Ende (shutdown-function) wieder entfernen lassen. Mittel Kontrollscript kann man dann auch nachschauen, welcher Prozess noch lebt.</p> <p>Klingt umständlich, ist aber eine probate Methode, die http-Connections schnell wieder freizugeben.</p> <p>Bei NGINX gehe ich jetzt von Linux aus, oder gibt es den auch für Windows?</p> <p>Aber, wenn es denn per Cron gestartet wird, was hat dann der NGINX damit zu tun?</p> <p>Glück Auf<br> Tom vom Berg</p> <div class="signature">-- <br> Es gibt nichts Gutes, außer man tut es!<br> Das Leben selbst ist der Sinn. </div> NGINX 504 Timeout Wed, 07 Aug 19 09:38:19 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754951#m1754951 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1754951#m1754951 <p>Tach!</p> <blockquote> <p>Also ich starte es über localhost, aber nur über PHP geht leider nicht :/</p> </blockquote> <p>Was genau benötigt denn da unbedingt einen HTTP-Request? Und gibt es keine Logfile-Einträge, die etwas genauer als "504" sind?</p> <p>dedlfix.</p> Es werden mehr Informationen benötigt. Thu, 08 Aug 19 08:59:22 Z https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1755050#m1755050 https://forum.selfhtml.org/self/2019/aug/07/nginx-504-timeout/1755050#m1755050 <blockquote> <blockquote> <p>Also ich starte es über localhost, aber nur über PHP geht leider nicht :/</p> </blockquote> </blockquote> <blockquote> <p>Was genau benötigt denn da unbedingt einen HTTP-Request?</p> </blockquote> <p>Womöglich wird <code>$_SERVER</code> oder <code>$_GET</code> befragt ... nur habert es da an dem "un-be-dingt" - denn die Variablen bzw. Arrays kann man ja auch selbst belegen.</p> <p>Meine Lösung wäre, <em>wenn es denn an der Laufzeit liegt</em>, das Skript dadurch zu starten, dass man es im Hintergrund durch <code>batch</code> (<code>at</code>), <code>cron</code>, <code>nohup</code> oder dergleichen ausführt und die Resultate per Mail verschickt oder halt in einer abrufbaren Datei speichert.</p> <p>Beipiel:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$cmd</span><span class="token operator">=</span><span class="token string single-quoted-string">'echo "/pfad/zu/php-cli /pfad/zu/skript.php" | batch'</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"Gestartet wird: <span class="token interpolation"><span class="token variable">$cmd</span></span>"</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string backtick-quoted-string">`$cmd 2>&1`</span><span class="token punctuation">;</span> </span></code></pre> <p>Zu den fehlenden Informationen:</p> <ul> <li>Ist denn eine lange Laufzeit des Skripts überhaupt zu erwarten?</li> <li>Läuft der NGNIX überhaupt als Proxy? Oder als Webserver?</li> <li>Gibt das Skript überhaupt etwas aus?</li> <li>Welche Informationen halten <strong>das</strong> oder <strong>die</strong> Error-Logs bereit?</li> <li>Eigener Server? Wenn ja: Wer oder wo ist denn der Administrator?</li> </ul>