PHP exec,在每次exec调用后清除输出缓冲区?

PHP exec,在每次exec调用后清除输出缓冲区?,php,Php,我使用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'); }

我使用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]
的值总是相同的

如何在每次迭代后清除输出缓冲区?

试试这个

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);
}
试试这个

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);
}
只需在wach迭代后使用
unset($output)
,或者更干净地在每次调用
exec()
$output=[]之前定义一个新的缓冲区
只需在wach迭代后使用
unset($output)
,甚至更干净,在每次调用
exec()
$output=[]之前定义一个新的缓冲区