Thread CGI ruft anderes Script aus, welches das aufrufende beendet anstatt zu warten.
(2 answers)
Opened by roooot at 2009-04-29 21:15
Das liegt wahrscheinlich am Hoster, er hat eine begrenzte Zeit eingestellt die das Script laufen darf. Wenn nun dein CGI-Script zu lange auf den Kindprozess warten muss, dann schießt der Webserver den Prozess ab. Warum Dabei nicht auch der Kindprozess beendet wird weiß ich nicht. (das sollte zumindest unter unixartigen Systemen passieren.)
Schau mal nach ob die Steuerung der Scriptlaufzeit über den Webserver erfolgt oder über einen andren Systemprozess. Wenn Der Webserver den nur seine Kindprozesse beendet, gibt es eine Möglichkeit das Problem zu umschiffen. Eventuell kannst du den Hoster dazu überreden dir etwas mehr Zeit zu spendieren. Wenn er nicht dazu bereit ist, dann meine Lösung wie folgt aus: Das CGIScript startet den Verarbeitungsprozess im Hintergrund. Das im Hintergund laufende Script erzeugt eine zufällig benannte Datei dessen Namen von CGIScript übergeben wurde. Wenn das im Hintergund laufende Script fertig ist löscht es die Datei wider. Mittels zeitgesteuertem redirect von der vom CGI-Script erzeugen Statusseite (die als parameter auch den Namen der zufällig benannten Statusdatei enthält) wird das CGI-Script so lange Aufgerufen wie die Datei vorhanden ist. Erst danach wird die abschließende Seite dargestellt. Das funktioniert aber nur, wenn die Laufzeit über den Webserver gesteuert wird. |