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

PHP シェル コマンドの実行からライブ アップデートを取得するにはどうすればよいですか?

DDD
リリース: 2024-12-01 04:36:16
オリジナル
811 人が閲覧しました

How Can I Get Live Updates from PHP Shell Command Execution?

ライブ更新による PHP シェル出力

PHP には、shell_exec、exec、system、passthru などのシェル コマンドを実行するための関数がいくつか用意されています。ただし、これらの関数は通常、コマンドが完了するまで待ってから結果を表示します。実行中にコマンドのライブ出力を表示したい場合は、次の代替案を検討してください。

オプション 1: 並列実行に Popen() を使用する

popen() 関数PHP スクリプトとシェル コマンドを実行する別のプロセスとの間にパイプを開きます。これにより、スクリプトはプロセスと対話し、その出力をリアルタイムで読み取ることができます。

<?php
$cmd = 'ping -c 10 127.0.0.1';
$proc = popen($cmd, 'r');

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

このコードは ping コマンドを実行し、出力が利用可能になると表示します。

オプション 2: ライブ出力に passthru() を使用する

passthru() 関数はコマンドの出力を直接送信します。ユーザーのブラウザに送信すると、ライブ アップデートをスキップして、その結果が表示されるたびに結果を表示できます。

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

最適化のヒント:

  • セッション バッファリングを無効にするsession_write_close() を呼び出して並列実行の干渉を防ぎます。
  • ヘッダーを設定しますサーバーが nginx ゲートウェイの背後にある場合、nginx がライブ出力を中断するのを防ぐために「X-Accel-Buffering: no」を指定します。

これらの手法を使用すると、シェル コマンド出力のライブ アップデートを有効にできます。 PHP スクリプトを使用して、ユーザー エクスペリエンスを向上させ、コマンドの実行に関するリアルタイムの洞察を提供します。

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

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