使用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"; }
說明:
用法:
使用改進的函數,只需使用所需的IP 位址呼叫它:
pingAddress("127.0.0.1");
這將輸出一則訊息,指示IP 位址127.0.0.1 是活著還是死了,由ping 指令決定。
以上是如何使用 PHP 可靠地 Ping 一個 IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!