Martin Gauglitz: Form ohne Serverantwort

Hallo,

ich habe ein kleines Problem und hoffe jemand kann mir dabei helfen.

Über eine HTML-Formular mit einem Submit-Button, möchte auf meinem Server ein CGI-Program starten.

Bis hierher recht einfach, aber...

Das CGI-Program braucht zur Abarbeitung seiner Aufgabe Auswertung bis zu 10 Minuten.

Solange wartet nun mein Browser auf ein "Reply" von meinem Server.

Das ist natürlich zu lange.

Wie kann ich es nun gestalten, dass das Auswertungsprogramm
(z.B. wie bei Unix) einfach im Hintergrund gestartet werden
kann, und einfach "nichts" an den Browser zurück gibt???

Oder das Program wird über den Browser gestartet und
kein "Reply" vom Server kommt zurück???

  1. Hallo Martin,

    Das CGI-Program braucht zur Abarbeitung seiner Aufgabe Auswertung bis zu 10 Minuten.
    Solange wartet nun mein Browser auf ein "Reply" von meinem Server.
    Das ist natürlich zu lange.

    Du koenntest es z.B. "dreistufig" realisieren. Im ersten Schritt rufst du ein CGI-Script auf, das HTML-Code an den Browser zuruecksendet und sich dann durch Aufruf eines anderen Scripts mit exec("/usr/bin/perl","anderesscript.pl") selbst beendet.

    Das zweite, aufgerufene Script ist das eigentliche Arbeitsscript, das die laengere Aufgabe abarbeitet. Die Ergebnisse koennte es in eine Datei schreiben.

    Der zurueckgesendete HTML-Code koennte z.B. ein JavaScript enthalten, das (vergleichbar mit der Anzeigeuhr in <../../tedh.htm>) von 10 Minuten auf 0 runterzaehlt. Danach ruft es, z.B. auch durch JavaScript, mit location.href ein drittes Script auf, diesmal wieder ein CGI-Script, das HTML-Code an den Browser zurueckgibt. Dieses dritte Script liest die Ergebnisdatei des Arbeitsscripts ein, bastelt daraus die HTML-Ergebnisausgabe und sendet diese an den Browser.

    Ganz wasserdicht ist diese Loesung nicht, da sie mit den 10 Minuten voraussetzt, dass das Arbeitsscript in der Zeit fertig ist. Mit etwas mehr Aufwand koennte man das aber auch in den Griff bekommen, etwa durch zyklisches Aufrufen eines Scripts, das prueft, ob schon eine Ergebnisdatei vorliegt, und dementsprechend Ergebnisse oder den alten Code an den Browser zuruecksendet.

    viele Gruesse
      Stefan Muenz