Führen Sie den Prozess mit Echtzeitausgabe in PHP aus

In PHP kannst du die proc_open-Funktion verwenden, um einen Prozess auszuführen und dessen Ausgabe in Echtzeit zu lesen. Hier ist ein Beispiel dafür:

<?php

$descriptorspec = [
  0 => ["pipe", "r"], // stdin ist eine Pipe, von der das Kind lesen wird
  1 => ["pipe", "w"], // stdout ist eine Pipe, in die das Kind schreiben wird
  2 => ["pipe", "w"], // stderr ist eine Pipe, in die das Kind schreiben wird
];

$process = proc_open('echo "Hello World!"', $descriptorspec, $pipes);

if (is_resource($process)) {
  while ($s = fgets($pipes[1])) {
    print $s;
  }
  proc_close($process);
}

Dieses Beispiel führt den Befehl aus (echo „Hello World!“) und liest seine Ausgabe und Fehlerströme in Echtzeit mit der Funktion fgets. Die Ausgabe wird dann auf dem Bildschirm ausgegeben. Beachten Sie, dass in diesem Beispiel $descriptorspec ein Array mit Descriptor-Arrays enthält. Jedes Descriptor-Array enthält einen Pipetyp, entweder "pipe" zum Lesen oder "w" zum Schreiben, und die entsprechende Pipe.