シェル コマンドを使用して 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 サイトの他の関連記事を参照してください。