如何使用PHP管道rake输出?

时间:2011-06-16 06:02:38

标签: php rake

我正在构建一个RAKEFILE,我希望在执行时在php生成的页面上显示输出。

我尝试使用system(),因为PHP文档提到了这个:

  

如果PHP作为服务器模块运行,system()调用还会尝试在每行输出后自动刷新Web服务器的输出缓冲区。

这似乎适用于多个shell命令,但是当我执行rake时,我只得到第一行:

(in /Users/path/to/proj)

有什么想法吗?

干杯!

3 个答案:

答案 0 :(得分:1)

尝试使用exec()功能

   exec($command, $output); 

$ output是一个数组

//retrieved data
for($out = '',$x = 0,$len = count($output); $x < $len; $x++) {
      $out .= $output[$x] . "\r\n";
}

或简单:

$out = join("\r\n", $output); 

答案 1 :(得分:0)

  

system()调用还尝试在&gt;之后自动刷新Web服务器的输出缓冲区。如果PHP作为服务器模块运行,则每行输出。

这意味着您只能获得返回值的最后一行输出。 system()手册页中的示例显示了它并建议使用passthru()来获取原始输出。我通常使用exec()。

答案 2 :(得分:0)

完成两项功能system()&amp; exec()实际上有效。但是,使用--verbose时生成的rake输出不会被考虑在内。这就是为什么我感到困惑。如果有人对这种区别有更广泛的了解,请分享:)