2010-12-11 9 views
1

私は3つのexec()コマンドを起動し、それぞれのpidを取得するPHPスクリプトを用意しています。exec()を含むdo whileループから出てこない

次の3つのバッチに移動する前に、3つの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"; 

は、誰もがそれがループから出てくることはありませんすることがありますかについての任意のアイデアを持っていますか?出力引数が存在する場合、 は、次に指定された配列は コマンドからの出力のすべての行で満たさ なり

答えて

5

PHPのexecは配列に追加し続けるだけなので、カウントは増加します。 execを呼び出す前に、出力配列call unset($output)を上書きするには

詳細については、php manual on execを参照してください。

+0

あなたは絶対ダイヤモンドです。できます。ありがとう。 – user489176

0

。 \ nのような末尾の空白は としてこの配列には含まれません。 すでに配列 にいくつかの要素が含まれている場合、の末尾にexec()が を追加することに注意してください。 要素に 要素を追加したくない場合は、配列 でunset()を呼び出してからexec()に渡してください。

からexec() manual

関連する問題