Programm über php beenden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Programm über php beenden

    Hi... Ein Programm über exec habe ich zum Laufen gebracht. Des Rätsels Lösung war der Harken in den Apache-Dienst-Eigenschaften unter Anmelden bei "Datenaustausch zwischen Dienst und Desktop zulassen".

    Das Programm wird nun mittels
    PHP-Code:
    exec ("C:\\Programme\\TrueCrypt\\TrueCrypt.exe"); 
    gestartet und sollte gleich darauf wieder beendet werden, damit das Script weiterläuft.

    Wie kann ich so was bewerkstelligen? Also entweder sollte das Script nicht auf das Ende des Programms warten oder das Programm gleich wieder beendet werden.
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

  • #2
    Schon mit passthru() probiert. Wenn du die Rückgabe in eine Datei umleitest dann sollte gemäss Manual der Befehl im Hintergrund ausgeführt werden und PHP mit dem Script weitermachen
    Beachten Sie, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      ja. habe ich schon versucht. Aber ich bekomme die ausgabe der Datei nicht umgeleitet. Wie geht das bei einem Windows-Server?

      Wenn ich die Umleitung hinbekommen sollte, dann geht das laut php.net auch mit exec.

      mit
      PHP-Code:
      $handel popen ("C:\\Programme\\TrueCrypt\\TrueCrypt.exe","r"); 
      geht es auch. Aber sobald ich dann Parameter hinzufüge
      PHP-Code:
      $handel popen ("C:\\Programme\\TrueCrypt\\TrueCrypt.exe /v D:\\test.img","r"); 
      wartet das Script wieder auf das Programmende.
      Zuletzt geändert von enforcer; 21.01.2008, 16:09.
      Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

      Kommentar


      • #4
        Kannst du nicht sowas wie start oder so benutzen?
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          noch jemand ne Idee? Das klappt nämlich gar nicht. Ich kann das Script nach dem Start auch nicht mit die; abwürgen, weil er ja nicht in die nächste Zeile springt...
          Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

          Kommentar


          • #6
            Die Umleitung funktionier meines Wissens genau gleich, wie bei einem vernünftigen OS:
            PHP-Code:
            passthru("C:\Programme\TrueCrypt\TrueCrypt.exe > test.log"); 
            Wie du den Prozess in den Hintegrund bringst, weiss ich allerdings nicht.
            Gruss
            H2O

            Kommentar


            • #7
              Pack den Kram doch eine Shutdown-Function, wenn du die Rückgabe nicht brauchst und dein Script sofort weiterlaufen soll.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Sorry, aber ich weiß nicht was eine Shutdown-Funktion ist. Muss ich erst mal ergoogeln.
                Ich hab das jetzt durch JavaScript gelöst. Das öffnet ein Fenster für eine Sekunde und schließ es gleich wieder. Diese Zeit reicht um in dem POPup den Code fürs Programmöffnen aufzurufen.

                Code:
                <html>
                <head>
                <title>openOrClosePopUp</title>
                <script type="text/javascript">
                <!--
                  function openPopUp () {
                   if (typeof popUp=="undefined" || popUp.closed == true) {
                    popUp = window.open("popopen.php","popUp");
                   } else {
                    popUp.close();
                   }
                  }
                //-->
                
                </script>
                </head>
                <body>
                <?
                if (isset($_POST["open"])){
                echo '
                	<script>
                	javascript:openPopUp();
                	window.setTimeout("openPopUp()", 1500);
                	</script>
                ';
                }
                
                ?>
                
                <form action="" method="post">
                	<input type="hidden" name="open" value="ok" />
                	<input type="submit" name="submit" value="Open" />
                </form>
                
                </body>
                </html>
                Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten. (Karl Kraus)

                Kommentar


                • #9
                  Ich hab das jetzt durch JavaScript gelöst. Das öffnet ein Fenster für eine Sekunde und schließ es gleich wieder. Diese Zeit reicht um in dem POPup den Code fürs Programmöffnen aufzurufen.
                  Keine gute Lösung, mit Shutdownfunktionen hast du dich sicher auch nicht beschäftigt oder?
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Kommentar


                  • #10
                    Was passiert denn wenn du das ganze in eine .bat Datei schreibst und diese aufrufst?

                    Kommentar

                    Lädt...
                    X