bense: Programm "langfristig" ausführen über shell_exec()

Hallo zusammen!

Ich habe einen Win2000-Server/Apache/PHP. Darauf läuft WinCron um einige Skripts automatisch laufen zu lassen. Jetzt schreibe ich die config-Datei von WinCron mit PHP um, und damit das wirksam wird, muss ich WinCron neu starten. Ich habe also einen Batch geschrieben, der den WinCron-Prozess beendet und neu aufruft. Wenn ich den Batch auf dem Server "von Hand" aufrufe, funktioniert alles. Wenn ich ihn aber mit PHP und shell_exec aufrufe, wird zwar der Prozess beendet, aber nachher das Programm nicht mehr aufgerufen(oder ich sehe es nicht, weil es schnell wieder beendet wird). An was liegt das? Was muss ich tun, dass der Prozess "dauerhaft am Leben bleibt"?

Danke für eure Antworten!

  1. Hallo nochmals...

    Weiss niemand Rat? Mir ist auf jeden Fall noch eingefallen, wie ich das ganze verständlicher erklären kann:

    Also, ich will per PHP auf dem Server ein Programm starten, ohne mich um die Antwort zu kümmern, bzw. sie abzuwarten. Es ist mir egal, was auf dem Server passiert, das PHP-Script soll einfach den Prozess starten und sich dann beenden. Und das Programm auf dem Server soll weiterlaufen, bis es fertig ist oder eben nicht.

    Gruss BenSe

    1. Hello,

      Also, ich will per PHP auf dem Server ein Programm starten, ohne mich um die Antwort zu kümmern, bzw. sie abzuwarten. Es ist mir egal, was auf dem Server passiert, das PHP-Script soll einfach den Prozess starten und sich dann beenden. Und das Programm auf dem Server soll weiterlaufen, bis es fertig ist oder eben nicht.

      Dann solltest Du dir mal ignore_user_abort() anschauen.

      http://de3.php.net/manual/de/function.ignore-user-abort.php

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Hallo!

        Das löst aber mein Problem nicht wirklich. Erstens muss ich dann warten, bis beim Browser der Timeout kommt. Und ich will ja nicht den user_abort ignorieren, sondern ich möchte ein am besten unabhängiges Programm ausführen. Am allerbesten wäre natürlich, wenn sich der php-prozess beenden könnte, der andere aber einfach weiterläuft. So quasi ein Programmstart über PHP.

        Ich weiss, da klingt etwas verwirrend...

        1. Hello,

          Das löst aber mein Problem nicht wirklich. Erstens muss ich dann warten, bis beim Browser der Timeout kommt. Und ich will ja nicht den user_abort ignorieren, sondern ich möchte ein am besten unabhängiges Programm ausführen. Am allerbesten wäre natürlich, wenn sich der php-prozess beenden könnte, der andere aber einfach weiterläuft. So quasi ein Programmstart über PHP.

          Ich weiss, da klingt etwas verwirrend...

          Nö, gar nicht. Hast Du schon mal versucht, den externen Prozess in den Hintergrund (&) zu stellen? Das willst Du doch schließlich. Machst Du auf der Konsole doch wahrscheinlich auch nicht anders - oder?

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen