Tobias: NGINX 504 Timeout

Hallo zusammen,

ich habe ein Problem mit einem NGINX 504 Timeout.

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?

Folgende Werte habe ich bereits erhöht

proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;
fastcgi_read_timeout  3600;
request_terminate_timeout = 3600
max_execution_time = 3600
  1. Hi,

    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.

    Hm. Muß das Script denn per http(s) gestartet werden? Oder könnte das auch direkt per php deinscript.php laufen? Dann wäre der nginx aus dem Spiel …

    cu,
    Andreas a/k/a MudGuard

    1. Also ich starte es über localhost, aber nur über PHP geht leider nicht :/

      1. Tach!

        Also ich starte es über localhost, aber nur über PHP geht leider nicht :/

        Was genau benötigt denn da unbedingt einen HTTP-Request? Und gibt es keine Logfile-Einträge, die etwas genauer als "504" sind?

        dedlfix.

        1. Also ich starte es über localhost, aber nur über PHP geht leider nicht :/

          Was genau benötigt denn da unbedingt einen HTTP-Request?

          Womöglich wird $_SERVER oder $_GET befragt ... nur habert es da an dem "un-be-dingt" - denn die Variablen bzw. Arrays kann man ja auch selbst belegen.

          Meine Lösung wäre, wenn es denn an der Laufzeit liegt, das Skript dadurch zu starten, dass man es im Hintergrund durch batch (at), cron, nohup oder dergleichen ausführt und die Resultate per Mail verschickt oder halt in einer abrufbaren Datei speichert.

          Beipiel:

          <?php
          $cmd='echo "/pfad/zu/php-cli /pfad/zu/skript.php" | batch';
          echo "Gestartet wird: $cmd";
          echo `$cmd 2>&1`;
          

          Zu den fehlenden Informationen:

          • Ist denn eine lange Laufzeit des Skripts überhaupt zu erwarten?
          • Läuft der NGNIX überhaupt als Proxy? Oder als Webserver?
          • Gibt das Skript überhaupt etwas aus?
          • Welche Informationen halten das oder die Error-Logs bereit?
          • Eigener Server? Wenn ja: Wer oder wo ist denn der Administrator?
    2. Hello,

      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.

      Hm. Muß das Script denn per http(s) gestartet werden? Oder könnte das auch direkt per php deinscript.php laufen? Dann wäre der nginx aus dem Spiel …

      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.

      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.

      Klingt umständlich, ist aber eine probate Methode, die http-Connections schnell wieder freizugeben.

      Bei NGINX gehe ich jetzt von Linux aus, oder gibt es den auch für Windows?

      Aber, wenn es denn per Cron gestartet wird, was hat dann der NGINX damit zu tun?

      Glück Auf
      Tom vom Berg

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.