如何使用 PHP 可靠地 Ping 一個 IP 位址?

Barbara Streisand
發布: 2024-11-07 22:56:03
原創
404 人瀏覽過

How to Reliably Ping an IP Address Using PHP?

使用PHP Ping 一個IP 位址並輸出結果

在PHP 中,您可以使用shell_exec() 函數傳送ping 指令到指定的IP位址。但是,在某些情況下,您的函數可能不會傳回預期結果,例如無論實際狀態如何,始終指示 IP 已「死亡」。

原始程式碼與問題:

提供的函數 pingAddress($ip) 使用 shell_exec() 在給定的 IP 位址上執行 ping 指令。但是,它會檢查是否存在字串「請求逾時」。在命令輸出中確定 IP 是否處於活動狀態。

出現此問題的原因是程式碼無法正確處理命令退出狀態的驗證。 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";
}
登入後複製

說明:

  • 我們使用exec() 而不是shell_exec() 來擷取輸出和指令的退出狀態。
  • 我們指定 ping 指令的完整路徑 (/bin/ping) 以確保不同系統之間的相容性。
  • 我們將重複次數設定為3 (-n 3) 以提高準確度。
  • 我們驗證指令的退出狀態,其中 0 表示 ping 成功(IP 處於活動狀態),任何其他值表示失敗(IP 已失效)。
  • 我們使用適當的訊​​息輸出結果,指示 IP 是存活還是死亡。

用法:

使用改進的函數,只需使用所需的IP 位址呼叫它:

pingAddress("127.0.0.1");
登入後複製

這將輸出一則訊息,指示IP 位址127.0.0.1 是活著還是死了,由ping 指令決定。

以上是如何使用 PHP 可靠地 Ping 一個 IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板