Nginx 504 Timeout-Fehler

Floezen

Blog Benutzer
Hallo,

ich habe einige wenige PHP Skripte, die etwas länger laufen, u.a. ein Skript, dass Bilddateien bearbeitet und ein Skript, das individualisierte Newsletter erstellt.
Die Skripte nutze ich schon lange und sie funktionierten bisher problemlos.

Jetzt bereite ich gerade einen Server Umstieg vor. Nginx ist Apache vorgeschaltet und meldet beim Aufruf dieser Skripte einen Timeout-Fehler.

Nun kann ich diesen Fehler vermutlich mit einer Anpassung der Webserver Konfiguration (http://kb.odin.com/de/120210) beheben, allerdings ist mir dabei nicht ganz wohl. Das timeout müsste ich auf 1-2 Stunden stellen...

Gibt es eine Möglichkeit die diversen timeouts der Webserver über das PHP Skript zu verlängern?
Oder gibt es alternativ die Möglichkeit timeouts der Webserver für den Aufruf bestimmter Skripte oder für den Aufruf von bestimmten Clients festzulegen?

Andere alternative Vorschläge sind natürlich auch willkommen, sofern die Skripte dadurch nicht grundsätzlich umgeschrieben werden müssten ;)

Danke & Grüße
Flözen
 

Lord Gurke

Nur echt mit 32 Zähnen
Ist es möglich, die Scripte statt über einen Aufruf per HTTP direkt über die Konsole zu starten? Dabei gibt es standardmäßig kein Timeout und die können so lange laufen wie sie wollen.
 

GwenDragon

Registered User
@Floezen
Dein Programmkonzept ist irgendwo falsch angelegt.

Warum startest du nicht einen Kindprozess, der lang läuft, und der Elternprozess versorgt den Webserver solange mit NOPs, dass dessen Prozess nicht abnibbelt. Wenn das Kind fertig ist, dann kann der Elternprozess ausgeben.
Ein bisschen IPC und fork sollte doch auch jemand mit PHP können.

So wird das üblicherweise gemacht.
 
Last edited by a moderator:

Floezen

Blog Benutzer
@GwenDragon

Hast Du mal einen weiterführenden Link zu dem Thema - ein Tutorial o.ä. damit ich eine bessere Vorstellung von einer solchen Umsetzung bekomme?!


Danke
 

elias5000

Site Reliability Engineer
einen Kindprozess, der lang läuft, und der Elternprozess versorgt den Webserver solange mit NOPs
Noch besser ist es, diese Aufgaben in Chunks zu erledigen. Das lässt sich dann z.B. auch parallelisieren. Und man kann Anzeigen, wieviel schon geschafft ist. Dabei können dann die Verarbeitungsprozesse ggf. auch auf anderen Kisten gestartet werden als auf der Kiste, auf der das Kontroll-Script läuft. Damit kann man dann beliebig horizontal skalieren, falls man mal viel zu bearbeiten hat und aber keine Zeit, ewig drauf zu warten.
 
Top