我有一个php脚本,可以触发三个exec()命令并获取它们各自的pid。
我想等到所有三个exec命令停止运行,然后再转到下一批三个。
我已经尝试在do while循环中检查每个pid,但它似乎永远不会出现在循环中:它只是坐在那里直到脚本超时。
以下是我尝试过的简化版本:
do {
$pid = 722;
print "checking";
exec("ps -p $pid", $output);
$count = count($output);
} while ( $count >= 2 );
print "out of do while";
有没有人对可能导致它永远不会出现的原因有任何想法?
答案 0 :(得分:5)
PHPs exec只是继续附加到数组,因此计数只会增加。在调用exec之前覆盖输出数组调用unset($output)
。
有关详细信息,请参阅php manual on exec。
答案 1 :(得分:0)
如果输出参数存在, 然后指定的数组将是 充满了每一行输出 命令。尾随空白,如此 as \ n,不包含在此数组中。 请注意,如果数组已经存在 包含一些元素,exec()会 追加到数组的末尾。如果你 不希望函数追加 元素,在数组上调用unset() 在将它传递给exec()之前。