Jürgen Stein: wann killt der Apache mein Perl Skript?

Hi Leutz,

eine etwas technische Frage. Folgendes Pseudo-Perl Skript...

print STDOUT "meine html datei";
close STDOUT;  ### damit der Browser denkt es kommt nix mehr vom Server

jetzt will ich aber weiter machen

while(1==1) {
  print TMPFILE $I;   ### skript weiter machen lassen und browser nix davon mitbekommen lassen...
  $I++;
}

Noch mal zur Erklärung. Ich gebe in meinem Perl Skript eine kleine WebSeite aus, nun tut der blöde Apache mir aber sobald close STDOUT kamm mein Skript abschiessen -  das soll aber nicht passieren - weil ich noch unendlich viele Zahlen in mein Tempfile geschrieben haben möchte. Er fängt auch an mit reinschreiben - aber irgendwann ist schluß.

Also kann mit einer sagen wann (und warum) der Apache das PerlSkript killt. Und wie sich das vielleicht verhindern läßt?

Oder hat jemand eine Idee wie ich den "Server" einen Hintergrundprozess starten lasse? (Geht ja auch nicht)

danke
-Jürgen

  1. Soweit ich das verstehe, willst du, daß das Script für immer läuft. Ich hab mal vor einiger Zeit so nen Code gepostet. Damit kannst du nen Programm schreiben, daß auch nach dem CGI-Timeout weiterläuft. Solltest du im Archiv finden. Der Titel war so was mit Timeout oder Schleife.

    1. endlos laufen soll es natürlich nicht - aber so eine halbe stunde könnte es schon dauern...

      ich suche mal ;-)

      1. endlos laufen soll es natürlich nicht - aber so eine halbe stunde könnte es schon dauern...

        ich suche mal ;-)

        Ich hab mal das URL gefunden. Hier ist es:

        http://www.teamone.de/selfhtml/sfarchiv/1999_2/t03884.htm#a18765

      2. Hallo Jürgen,

        ich hatte dieses Thema vor kurzem auch angesprochen. Erik Tews hatte mir auch diese Lösung zukommen lassen.
        Funktioniert auch einwandfrei!
        Aber:
        Sei bloss vorsichtig damit!!! Wenn in dem Child-Prozeß keine funktionierende Abbruchbedingung vorliegt, läuft das Script bis 2090 bzw. bis der Admin es abbricht oder der Server neu gebootet wird. Das kann einigen Ärger einbringen. Deswegen rate ich Dir, erst den Teil, der später den Child-Prozeß ausmacht, separat (lokal?) zu testen. Wenn er funktioniert, d.h. irdendwann abbricht, es alles in Ordnung und Du kannst es implementieren. Besonders ratsam ist dies, wenn Du keinen Telnet-Zugang (wie ich bei Schlund...grrr) hast! Dann gibt es keine Möglichkeit zu sehen, ob der Prozeß noch läuft, oder nicht!

        Das nur als gutgemeinten Rat!

        Alles Gute,
        Reiner