У меня есть следующий код для запуска Python
сценарий от PHP
и передать входные значения stdin
, (источник)
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w")
);
$process = proc_open('python script.py', $descriptorspec, $pipes, null, null);
if (is_resource($process)) {
fwrite($pipes[0], "first input"); // input 1
fwrite($pipes[0], "second input"); // input 2
fclose($pipes[0]); // has to be closed before reading output!
fgets($pipes[1]);
$output = "";
while (!feof($pipes[1])) {
$output .= fgets($pipes[1]) . "</br>";
}
fclose($pipes[1]);
proc_close($process);
echo $output;
}
Проблема: $output
захватывает все, кроме первой строки stdout
в командной строке. Например, если Python
программа печатает Hello
, from
, Python
это последовательные линии, $output
только содержит from
а также Python
, Как мне захватить первую строку stdout
тоже?
Задача ещё не решена.
Других решений пока нет …