PHP exec,在每次exec调用后清除输出缓冲区?
我使用PHP的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'); }
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=[]之前定义一个新的缓冲区代码>