2016-02-01 132 views
1

我有一个条件,我必须在指定端口上启动iperf服务器作为后台进程,并且如果iperf服务器正在运行,我必须向客户端发送响应。我试过在laravel 4.2后台运行任务

shell_exec('iperf -s -p {port} -D'); 

但它不返回控制/无限循环开始。 服务器将启动,但shell_exec以下的代码将不会执行。 任何人有一个解决方案或建议我应该如何处理这个来获得结果?

回答

1

你的命令iperf -s -p {port} -D恰好有stderr输出,试试这样做:

$outfile = "/tmp/erroutperf.out"; 
$port = 8080; 
shell_exec("iperf -s -p $port -D > $outfile 2>&1"); 

基本附加命令> /tmp/erroutperf.out 2>&1,告诉Bash程序(iperf的)的两个标准错误输出和标准输出保存 到一个文件/ TMP/erroutperf.out

获取命令的输出是:

file_get_contents($outfile);