处理冗长脚本时的php-capture控制台输出

时间:2011-02-08 11:34:27

标签: php streaming continuous proc-open

我有一个问题就是在执行时将ssh脚本输出捕获到浏览器上而不是最终使用它。

写的剧本:

$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  user@server', $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脚本需要10分钟才能执行。如果$ counter = 10则需要花费太多时间才能在屏幕上显示实际输出。我要求它在执行时继续显示流输出,以便我们知道发生了什么。 有缓冲的情况吗?

1 个答案:

答案 0 :(得分:0)

尝试flush() function