4

こんにちは私はpopenでプロセスを実行しています;-

$handle = popen('python scriptos.py', "r");
while (!feof($handle)) {
    $data = fgets($handle);
    echo "> ".$data;
}

そして、5行を返すプロセスから3行しか取得していません。この正確なコマンドをCLiで実行すると、より多くの応答が得られます。早期に読み取りを停止したかのようです(作業中に次の2行を完了して更新するのに時間がかかる場合がありますが、これは進行状況インジケーターです)。

私は何か間違ったことをしていますか?proc_openの方が適していますか(試してみることができるかどうかを確認し始めました)。

4

1 に答える 1

8

欠落している2行はおそらくSTDERRに書き込まれておりpopen()、STDOUTへのポインタのみを返します。

を使用してSTDERRのポインタを取得するか、行を次のようにproc_open()変更できます。popen()

$handle = popen('python scriptos.py 2>&1', "r");

STDERRをSTDOUTにリダイレクトして、出力に含まれるようにします。

于 2011-12-15T16:28:33.200 に答える