2010-04-08 72 views
2
<?php 
    // Execute a shell script 
    $dump = shell_exec('bigfile.sh'); // This script takes some 10s to complete execution 
    print_r($dump); // Dump log to screen 
?> 

当上述脚本从浏览器执行时,它会加载10秒,并将脚本输出转储到屏幕上。这当然是正常的。但是,如果我要显示在实时在屏幕上通过shell脚本写入stdout数据,有一些方法我能做到这一点?shell_exec()in PHP

回答

1

尝试passthru()popen()

该代码将是这个样子:

<?php 
     $fp=popen("bigfile.sh","r"); 
     while (!feof($fp)) { 
       $results = fgets($fp, 256); 
       echo $result; 
       flush(); 
     } 
?> 

由于@wik建议下面你也可以尝试proc_open代替POPEN应该以类似的方式工作。

+0

您可以加入一个代码示例为其中一方,伊沃?可能是我的代码上面的替代品? – 2010-04-10 01:09:50

2

我想补充proc_open(),它为您提供了命令执行更多的控制,如果你需要它,如果不尝试中继()或POPEN(),因为它是前面提到的。

2

试试这个:

$handle = proc_open('bigfile.sh', array(0 => STDIN, 1 => STDOUT, 2 => STDERR), $pipes); 
$status = proc_close($handle); 

它为我的伟大工程。