使用 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中文网其他相关文章!