problem mit exec

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

  • problem mit exec

    Liebes Forum,
    ich habe folgendes Problem:

    ich starte ein Programm im Hintergrund mit exec.
    PHP-Code:
    exec("./programm $args > /dev/null &"); 
    Nun möchte ich aber, dass das Programm, nachdem es fertig ist Bescheid gibt, dass es fertig ist. Ist das irgendwie möglich?
    Oder ist es zum Beispiel möglich, dass die Ausgaben des Programmes ausgegeben werden. ich meine hier, dass eine Ausgabe kommt und zehn sekunden später eine andere Ausgabe. Kann ich die Ausgaben ontime anzeigen, d.h. wenn eine Ausgabe kommt diese sofort anzeigen?

    Danke für Eure Hilfe
    Viele Grüsse
    RON

  • #2
    Hi,

    das was du suchst ist ein exec-call mit umgeleiteten filedescriptoren aka pipes.

    popen

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Hallo closure,

      danke für deine schnelle Antwort. Irgendwie scheint das bei mir nicht zu funktionieren. Als Beispiel habe ich es so gemacht:

      PHP-Code:
      $handle popen("./programm $args 2>&1"'r');
      while(!
      feof($handle)) {
         
      $buffer fgets($handle);
         echo 
      "$buffer<br/>\n";
         
      ob_flush();
         
      flush();
      }
      pclose($handle); 
      Die Ausgabe erfolgt erst ganz am Ende und es dauert ewig. Mache ich da irgendwas falsch? Ich dachte ich kann die Ausgaben des Programmes ontime sehen.

      Danke für Deine Hilfe
      Viele Grüsse
      RON

      Kommentar


      • #4
        Hi,

        aus meiner sicht können zwei sachen dafür verantwortlich sein.
        1) du liesst per fgets(). Die funktion liesst so lange vom stream
        bis entweder eof erreicht ist,oder das newline-zeichen gelesen wurde.
        Hier könnte eine angabe für die größe des buffers helfen.
        2) php puffert die ausgabe ebenfalls, wenn also der buffer noch nicht gefüllt ist, sieht man auch noch nichts. Da gibt es aber auch möglichkeiten. Vll mal in der php-referenz nach outputbuffering suchen.
        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

        Kommentar

        Lädt...
        X