2016-02-13 69 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); 
}