我正在使用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]
的值总是相同的。
如何在每次迭代后清除输出缓冲区?
答案 0 :(得分: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);
}