2

現在、次のようなコードがあります。

$output = shell_exec( !-- unix commands are here --! );
echo $output; 

特定のボタンをクリックすると、シェル スクリプトが出力され、ブラウザに表示される Web サイトがあります。これは完全に機能しています。唯一の問題は、出力が完了するまで何が起こっているのかがわからないことです。約 5 ~ 7 分待つ必要があり、約 100 行の出力が表示されます。出力が実行されるときに出力をブラウザにプッシュしようとしています - 出力がリアルタイムで(ブラウザ上で)発生していることを確認できるようにしたいです。

popenproc_openflush()、などを使用しようとしましたがob_start、何も機能していないようです。テキストファイルを開き、出力の内容をテキストファイルに書き込み、テキストファイルをループで段階的に読み取ろうとしました。私は PHP の初心者なので、上記の方法を適切に使用していない可能性があります。

これを達成する最も簡単な方法は何ですか?

4

1 に答える 1

1

PHP は exec、system、pass_thru などをブロッキング モードで実行するため、可能性は非常に限られています。PHP は、コマンドに以下を追加するようなことをしない限り、スクリプト全体に進む前にコードの実行を終了する必要があります。

"> /dev/null 2>/dev/null &"

もちろん、これはコマンドの出力を停止しますが、おそらく次のようなものです。

exec('command > /cmd_file 2>/cmd_file &');

$file = fopen('/cmd_file', 'r');
while (!feof($file)) {
    echo fgets($file);
    sleep(1);
}

fclose($file);

試してみる価値。

于 2012-06-10T03:25:52.963 に答える