2011-02-08 2 views
0

У меня проблема с записью вывода сценария 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, то это занимает слишком много времени, чтобы получить реальный вывод, который вызывается на экране. Я требую, чтобы он продолжал показывать вывод потока, когда он выполняется, чтобы мы знали, что происходит. Есть ли случай буферизации?

ответ

0

Попробуйте flush() function.

+1

Спасибо. Вы хотите сказать: echo stream_get_contents ($ pipes [1]); flush(); – rahul

+0

Спасибо. Вы хотите сказать: 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

 Смежные вопросы

  • Нет связанных вопросов^_^