ホームページ > バックエンド開発 > PHPチュートリアル > PHP シェル コマンドからライブ出力を実現するにはどうすればよいですか?

PHP シェル コマンドからライブ出力を実現するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-01 00:41:11
オリジナル
415 人が閲覧しました

How Can I Achieve Live Output from PHP Shell Commands?

PHP によるライブ出力 Popen() と passthru() を使用すると、

PHP のshell_exec() 関数を使用してコマンドを実行し、そのコマンドをキャプチャできます。出力。ただし、コマンドの実行中に出力をライブで表示することは、shell_exec() や、system()、exec()、または passthru() などの他の組み込み関数では不可能です。

ライブ出力の場合は、popen() の使用を検討してください。 ) その代わり。プロセスへのパイプを開き、その入出力をファイルであるかのように読み書きできるようにします。

即時出力用の Passthru():

コマンドの完了を待たずに出力をユーザーに直接表示する必要がある場合は、次のように使用できます。 passthru():

echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
';
ログイン後にコピー

リアルタイム出力用の Popen():

コマンドの実行時に出力をライブで表示するには、popen() とwhile ループ:

while (@ ob_end_flush()); // end output buffers

$proc = popen($cmd, 'r');
echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    @ flush();
}
echo '
';
ログイン後にコピー

このコードはコマンドへのパイプを開き、その出力をチャンクで読み取り、表示します

役立つ情報:

  • セッションの問題を防ぐために、ループの前に session_write_close() を呼び出します。
  • 背後のサーバーの場合nginx、nginx を防ぐためにヘッダー「X-Accel-Buffering: no」を追加しますバッファリング。
  • セッションも更新するループ内でコードが実行されている場合、ライブ出力が中断される可能性があることに注意してください。

以上がPHP シェル コマンドからライブ出力を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート