PHP を使用して、一般的に使用される DOS コマンド ping コマンドをシミュレートします。ここで主に使用されるのは、システムの ping コマンドを呼び出すための PHP の組み込み関数 exec です。これにより、ping コマンド機能が実現されます。
<?php $to_ping='www.phpernote.com'; $count=2; $psize=66; echo "正在执行php ping命令,请等待...\n<br><br>"; flush(); while(1){ echo "<pre class="brush:php;toolbar:false">"; exec("ping -c $count -s $psize $to_ping", $list); for($i=0;$i<count($list);$i++){ print $list[$i]."\n"; } echo ""; flush(); sleep(3); } ?>
exec 関数を使用するには、サーバーがシステム組み込み関数の呼び出しをサポートする必要があることに注意してください。また、system などの PHP 組み込み関数を使用してこの機能を実現することもできます。 PHP マニュアルでは、次の 2 つの関数について説明しています:
exec --- 外部プログラムを実行します
構文: string exec ( string command [, array &output [, int & return_var]] )
説明:
exec( ) は、指定されたコマンド command を実行します。コマンドを実行してコマンドからすべてのデータを取得する必要がある場合は、 passthru() 関数を使用できます。
パラメーター配列が指定されている場合、指定された配列にはコマンドによって出力された各行が書き込まれます。配列に既に要素が含まれている場合、exec() はそれを配列の末尾に追加します。この関数で要素を追加したくない場合は、配列を exec() に渡す前に unset() を呼び出すことができます。
パラメータ array と return_var が指定されている場合、返されたステータス コマンドはこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP がハングアップします。プログラムの実行が終了します。
system --- 外部プログラムを実行し、出力を表示します。
構文: string system (string command [, int &return_var])
説明:
system() は、指定されたコマンド command を実行し、結果を出力します。パラメータ return_var が指定されている場合、実行されたコマンドのステータス コードがこの変数に書き込まれます。
注: ユーザー入力からのデータがこの関数に渡されることを許可する場合は、ユーザーがシステムをだまして任意のコマンドを実行できないようにするために、escapeshellcmd() を使用する必要があります。
注: この関数を使用してプログラムを開始し、バックグラウンドで実行中にそのプログラムを残しておきたい場合は、プログラムの出力がファイルまたは出力データ ストリームにリダイレクトされていることを確認する必要があります。そうしないと、PHP がハングアップします。プログラムの実行が終了します。
これらはどちらもシステム シェル コマンドを呼び出すために使用されます。違いは、
exec はすべての実行結果を $output 関数 (配列) に返すことができ、$status は実行のステータスであり、0 は成功を意味し、1 は失敗を意味します。結果を直接返す $output 関数は必要ありません。同様に、$return_var は実行のステータス コードです。 exec の例:
<?php $a = exec("dir",$out,$status); print_r($a); print_r($out); print_r($status); ?>
<?php $a = system("dir",$out); print_r($a); print_r($out); ?>
シミュレーション ping コマンド ( php exec 関数の使用方法) 関連記事については、PHP 中国語 Web サイトに注目してください。