我正在构建一个RAKEFILE,我希望在执行时在php生成的页面上显示输出。
我尝试使用system()
,因为PHP文档提到了这个:
如果PHP作为服务器模块运行,system()调用还会尝试在每行输出后自动刷新Web服务器的输出缓冲区。
这似乎适用于多个shell命令,但是当我执行rake时,我只得到第一行:
(in /Users/path/to/proj)
有什么想法吗?
干杯!
答案 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输出不会被考虑在内。这就是为什么我感到困惑。如果有人对这种区别有更广泛的了解,请分享:)