как получить частичный вывод из процесса, который все еще работает в PHP? - PullRequest
0 голосов
/ 17 октября 2018

У меня есть PHP-скрипт, который запускает второй скрипт с помощью proc_open ().

Затем основной скрипт передает второму скрипту некоторые данные на STDIN.

Я бы хотел второй скриптчтобы иметь возможность печатать вывод и основной скрипт для его получения.

Пока все работает нормально.

Однако мой основной скрипт должен многократно вызывать второй скрипт и оптимизировать его.это, я хотел бы сохранить ресурс открытым.Это тоже нормально.

Но я бы постепенно увидел вывод сценария.Кажется, это не работает: похоже, оба сценария в конечном итоге ждут друг друга.

Итак, что я хочу сделать, сводится к следующему:

// Main script
$resource = proc_open($command, $descriptorspec, $pipes);

foreach ($data as $line) {
  fwrite($pipes[0], $line);

  // Get output back from the second script's STDOUT to see how
  // it reacted to this piece of data.
  while ($line = fgets($this->pipes[1])) {
    dump("script: $line");
  }
}

// Second script.
while ($line = trim(fgets(STDIN))) {
  print "some sort of output to report how I'm doing";
}

1 Ответ

0 голосов
/ 17 октября 2018

Я нашел способ для второго сценария сказать основному сценарию, чтобы он прекратил ожидание:

print "\n";

, а затем основной сценарий должен сделать это при получении выводаиз процесса:

// Get output back from the second script's STDOUT to see how // it reacted to this piece of data. while ($line = trim(fgets($this->pipes[1]))) { dump("script: $line"); }

Второй сценарий в основном использует пустую строку в качестве сообщения для основного сценария, чтобы сказать «Я сейчас делаю вывод, прекрати слушать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...