PHP を使用して IP アドレスに確実に ping を送信するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-07 22:56:03
オリジナル
325 人が閲覧しました

How to Reliably Ping an IP Address Using PHP?

PHP を使用した IP アドレスへの ping と結果の出力

PHP では、shell_exec() 関数を使用して ping コマンドを送信できます。指定された IP アドレスに送信されます。ただし、実際のステータスに関係なく、IP が「無効」であることを常に示すなど、関数が予期した結果を返さないシナリオが存在する可能性があります。

元のコードと問題点:

提供された関数 pingAddress($ip) は、shell_exec() を使用して、指定された IP アドレスで ping コマンドを実行します。ただし、「リクエストがタイムアウトしました」という文字列が存在するかどうかがチェックされます。

この問題は、コードがコマンドの終了ステータスの検証を適切に処理しないために発生します。 shell_exec() は、コマンドの終了ステータスではなく、コマンドの完全な出力を提供します。さらに、このコードでは IP アドレスを ping コマンドに渡すために二重引用符を使用していないため、予期しない結果が生じる可能性があります。

改善されたアプローチ:

これらに対処するには問題がある場合は、これの改良版をご紹介します。関数:

function pingAddress($ip) {
    // Execute the ping command with full path and 3 repetitions
    exec("/bin/ping -n 3 $ip", $output, $status);

    // Check the exit status
    if ($status == 0) {
        $result = "alive";
    } else {
        $result = "dead";
    }

    // Output the result
    echo "The IP address, $ip, is $result";
}
ログイン後にコピー

説明:

  • コマンドの出力と終了ステータスの両方をキャプチャするために、shell_exec() の代わりに exec() を使用します。 .
  • 異なるバージョン間での互換性を確保するために、ping コマンドへのフルパス (/bin/ping) を指定します。
  • 精度を向上させるために、繰り返し回数を 3 (-n 3) に設定します。
  • コマンドの終了ステータスを確認します。0 は ping が成功したことを示します (IP は生きています)。 ) およびその他の値は失敗 (IP が無効である) を示します。
  • IP が生きているかどうかを示す適切なメッセージを使用して結果を出力します。

使用法:

改良された機能を使用するには、目的の IP アドレスを指定して呼び出します:

pingAddress("127.0.0.1");
ログイン後にコピー

This ping によって判断されたように、IP アドレス 127.0.0.1 が生きているか死んでいるかを示すメッセージを出力します。コマンド。

以上がPHP を使用して IP アドレスに確実に ping を送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!