У меня проблема с записью вывода сценария ssh в браузер, поскольку он выполняется, а не в конце.вывод на консоль php-capture при обработке длинного скрипта
Сценарий написан:
$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error.log","a")
) ;
$cwd = 'path/path1' ;
for($counter=1;$counter<= 10;$counter++)
{
$cmd="sudo test.sh arg1 arg2 arg3";
$process = proc_open('ssh [email protected]', $descriptorspec, $pipes, $cwd) ;
if (is_resource($process))
{
fwrite($pipes[0], $cmd) ;
fclose($pipes[0]) ;
echo stream_get_contents($pipes[1]) ;
fclose($pipes[1]) ;
$return_value = proc_close($process);
echo "$counter=command returned $return_value<br>";
}
}
Shell скрипт принимает 10mins для выполнения. Если $ counter = 10, то это занимает слишком много времени, чтобы получить реальный вывод, который вызывается на экране. Я требую, чтобы он продолжал показывать вывод потока, когда он выполняется, чтобы мы знали, что происходит. Есть ли случай буферизации?
Спасибо. Вы хотите сказать: echo stream_get_contents ($ pipes [1]); flush(); – rahul
Спасибо. Вы хотите сказать: echo stream_get_contents ($ pipes [1]); flush(); Я попробовал this- if (ob_get_level() == 0) ob_start(); echo stream_get_contents ($ pipes [1]); ob_flush(); flush(); usleep (50000); он работал нормально, если script1 занимает меньше времени, но для скрипта2, который требует времени для выполнения, тогда он идет в том же многопользовательском режиме. – rahul