不是来自包含exec()的do while循环

时间:2010-12-11 15:48:08

标签: php exec

我有一个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";

有没有人对可能导致它永远不会出现的原因有任何想法?

2 个答案:

答案 0 :(得分:5)

PHPs exec只是继续附加到数组,因此计数只会增加。在调用exec之前覆盖输出数组调用unset($output)

有关详细信息,请参阅php manual on exec

答案 1 :(得分:0)

  

如果输出参数存在,   然后指定的数组将是   充满了每一行输出   命令。尾随空白,如此   as \ n,不包含在此数组中。   请注意,如果数组已经存在   包含一些元素,exec()会   追加到数组的末尾。如果你   不希望函数追加   元素,在数组上调用unset()   在将它传递给exec()之前。

来自exec() manual