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

use*_*176 1 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";
Run Code Online (Sandbox Code Playgroud)

有没有人对什么可能导致它永远不会出现循环有任何想法?

fal*_*tro 5

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

有关详细信息,请参阅exec上php手册.