ホームページ >バックエンド開発 >PHPチュートリアル >3 つの PHP 呼び出しシステム コマンド関数の違いと関連性_PHP チュートリアル
Linux システムのシェル コマンドを実行するときに使用しますこれら 3 つのコマンドはすべて Linux システムのシェル コマンドを実行できますが、実際には異なります。
system() は、シェルの結果。
exec() は結果を出力せず、シェル結果の最後の行を返します。すべての結果は返された配列に保存できます。
passthru()はコマンドを呼び出すだけで、コマンドの実行結果をそのまま標準出力装置に出力します。
同じこと: コマンド実行のステータスコードを取得できます
PHP で外部コマンドを呼び出すには、次の 3 つの方法が使用できます:
PHP が提供する特別な関数を使用する
PHP は合計 3 つの方法を提供します特殊関数 外部コマンドを実行する PHP は、システム コマンド関数 system()、exec()、passthru() を呼び出します。
system()
プロトタイプ: string system (string command [, int return_var])
system() 関数は、他の言語の関数と似ており、指定されたコマンドを実行するためにシステム コマンド関数を呼び出します。そして結果を出力して返します。 2 番目のパラメーターはオプションであり、コマンドの実行後にステータス コードを取得するために使用されます。
例:
system("/usr/local/bin/webalizer/webalizer");
exec()
プロトタイプ: string exec(string command [, string array [, int return_var]])
exec() 関数は、PHP の system() 呼び出しシステム コマンド関数と似ていますが、指定されたコマンドを実行しますが、結果は出力されませんが、結果の最後の行が返されます。コマンド結果の最後の行のみを返しますが、2 番目のパラメーター配列を使用すると、配列の最後に結果を 1 行ずつ追加することで完全な結果を取得できます。したがって、配列が空でない場合は、呼び出す前に unset() を使用して配列をクリアするのが最善です。第3パラメータは第2パラメータを指定した場合のみ、コマンド実行時のステータスコードを取得できます。
例:
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
exec("/bin/ls -l", $ res, $rc);
passthru()
プロトタイプ: void passthru (string command [, int return_var])
passthru () この PHP 呼び出しシステム コマンド関数は、結果を返しません。ただし、コマンドの実行結果はそのまま標準出力装置に出力されます。したがって、 passthru() 関数は、pbmplus (元の画像のバイナリ ストリームを出力する、Unix で画像を処理するツール) のようなプログラムを呼び出すためによく使用されます。コマンド実行時のステータスコードも取得できます。
例:
header("Content-type: image/gif");
passthru("./ppmtogif Hunte.ppm");
上記は、3 つの PHP 呼び出しシステム コマンド関数のパフォーマンスの比較です。 ,お役に立てれば幸いです。