2016-02-13 68 views
0

我使用PHP的exec函數調用命令行上的應用程序:PHP exec,每次執行調用後清除輸出緩衝區?

foreach($jobs as $job) 
{ 
    exec($job['command'], $output); 

    if($cmdOutput = json_decode($output[0], true)) 
     $log->addInfo($cmdOutput['message']); 
    else 
     $log->addError('Invalid JSON response'); 
} 

從命令行程序將返回1線輸出。它總是一個JSON編碼的字符串(除非有一個我沒有考慮過的錯誤)。例如:

{"response":false,"message":"No ads found"} 

的問題是輸出緩衝器每次運行後也不會被清除,所以$output[0]值總是在每次迭代相同的。

如何在每次迭代後清除輸出緩衝區?

+1

只需使用'未設置($輸出)'WACH迭代之後,或者甚至更清潔,每次調用'Exec之前限定_new_緩衝液()':'$輸出= []; ' – arkascha

回答

0

嘗試此

foreach($jobs as $job) 
{ 
    $output = array(); 
    exec($job['command'], $output); 

    if($cmdOutput = json_decode($output[0], true)) 
     $log->addInfo($cmdOutput['message']); 
    else 
     $log->addError('Invalid JSON response'); 

    unset($output); 
}