从php忽略输出运行ruby脚本

时间:2015-03-23 00:33:33

标签: php ruby

我必须在后台运行一个shell命令(使用来自/ usr / local / bin的ruby脚本),使用php(来自html / php表单)并忽略所有输出。 我尝试过exec()system()shell_exec()

在终端中执行脚本(不是由我编写,script link - 我不知道ruby)并将标准输出重定向到/ dev / null,它会一直显示有关下载的实时信息下载的进度和速度,直到完成。

我想这是因为脚本,我读过proc_open()可以提供帮助的地方,但我不知道如何使用它。

修改

还添加“&”对于命令(在终端中),它一直显示有关下载进度和下载速度的实时信息,直到完成为止。

1 个答案:

答案 0 :(得分:0)

/usr/local/apache2/htdocs$ ls 
1.php   ruby_prog.rb

1.PHP:

<div>hello</div>
<div>
<?php

$command = 'ruby ruby_prog.rb';
$output = [];
exec($command, $output, $return_var);
echo($output[0]);

?>
</div>

ruby​​_prog.rb:

puts 'world'

URL:

http://localhost:8181/1.php

在浏览器中输出:

hello
world

source html:

<div>hello</div>
<div>
world</div>

您可以检查$return_var的值 - 如果它为0,则ruby程序成功运行;如果它不为零,则出现错误。

如果您不想要任何输出,则可以使用以下命令:

ruby ruby_prog.rb > /dev/null 2>&1

>将stdout发送到/ dev / null,这是一个接收器,即它就像一个黑洞,而2>&1表示将stderr(2)发送到stdout(&amp; 1)去的地方。