2016-02-01 169 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);