2011-07-17 14 views
0

phpでpopen()を使用して2つのlinuxコマンドを実行しています。 1を実行すると、出力を集めて正常に処理できます。 2> & 1のページに漏斗しているときに同時に2つを実行すると、出力が混乱します。 2つのコマンドを実行して、同じページの両方の出力を扱うことは可能ですか?2つのコマンドを実行し、両方の出力を同じページで処理できますか?

私は基本的に、各コマンドの底コード

$handle = popen ("-some long command 2>&1"); 

while (false !== ($char = fgetc($handle))) 
{ 
    if ($char == "\r") 
    { 
    // You could now parse the $line for status information. 
$line= "$line\n"; 
if (preg_match("/Duration: (.*?),/", $line, $matches)){ 
//do stuff 

} 

$line = ""; 
} else { 
$line .= $char; 
} 
ob_flush(); 
flush(); 
} 
pclose ($handle); 
} 

答えて

2

proc_openが複数、非同期コマンドの実行を可能にする複製。 標準出力パイプを介して出力が得られます。

PS:重複しないコード。代わりに関数を使用してください!

+0

私は上記のリアルタイムプロセスを複製するのに問題があります。上記のことをどうやって複製しますか? proc_openは終了時に出力を出力するように見えます。 – Scarface

+0

nvm私はそれを働かせました。しかし、それはスタンダードから出てくる。あなたはそれがなぜあるのか知っていますか? – Scarface

+0

前に私に起こった...私はコマンドが出力をどのように処理するかによって異なります。 –

関連する問題