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

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

DDD
リリース: 2024-12-02 20:17:12
オリジナル
663 人が閲覧しました

How Can I Get Live Output from Shell Commands in PHP?

シェル コマンドを使用して PHP 経由でライブ出力にアクセスする

PHP のshell_exec 関数は、PHP スクリプト内からシェル コマンドを実行する便利な方法を提供します。ただし、実行時にこれらのコマンドのライブ出力を取得するのは困難な場合があります。この記事では、この機能を実現する 2 つの方法について説明します。

popen() と対話性

プロセスと対話し、実行中の出力を読み取るには、popen() を使用します。 。この関数は、他のファイル リソースと同様に扱うことができるファイル ポインターを返します。

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

このスクリプトはコマンドを開始し、その出力を 4096 バイトのチャンクで読み取り、ページに直接出力します。 flash() 呼び出しにより、出力が即座に表示されます。

passthru() による利便性

ライブでの対話性が必要ない場合、 passthru() は代替アプローチを提供します。この関数は、コマンドの出力をページに直接エコーします。

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

passthru() は単純ですが、コマンドの結果全体を一度に出力するため、大量のコマンドを生成するコマンドには適さない可能性があります。

結論

popen() と passthru() はどちらも異なる機能を提供しますPHP のシェル コマンドからライブ出力にアクセスするためのメカニズム。 Popen() はデータ取得をきめ細かく制御し、リアルタイムの更新を可能にします。一方、 passthru() は使いやすさのために対話性を犠牲にしており、即時の出力が必要なシナリオに適しています。

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

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