首页  >  文章  >  后端开发  >  为什么无论 IP 地址如何,我的 PHP ping 函数总是返回“死”?

为什么无论 IP 地址如何,我的 PHP ping 函数总是返回“死”?

DDD
DDD原创
2024-11-06 05:13:02716浏览

Why does my PHP ping function always return

使用 PHP 对 IP 地址执行 Ping 操作并回显结果

在此编程问题中,用户寻求帮助以创建 PHP 函数来 ping IP 地址并显示它是否处于活动状态。他们已经实现了一个函数,但无论提供的 IP 地址如何,它始终返回“dead”。

初始函数:

function pingAddress($ip){
    $pingresult = shell_exec("start /b ping $ip -n 1");
    $dead = "Request timed out.";
    $deadoralive = strpos($dead, $pingresult);

    if ($deadoralive == false){
        echo "The IP address, $ip, is dead";
    } else {
        echo "The IP address, $ip, is alive";
    }

}

说明:

该函数尝试使用 shell_exec 函数 ping IP 地址,并使用 -n 1 选项仅发送一个 ping 请求。然后,它检查 ping 命令的输出中是否有字符串“请求超时”。确定 IP 地址是否有效。

问题:

  1. Windows 特定命令: start /b ping 命令为特定于 Windows,它可能不适用于其他操作系统。
  2. 在输出上使用 strpos: 直接检查 ping 输出中字符串的位置可能不可靠,因为输出格式可能会因 ping 命令的版本而异。
  3. 缺少双引号:变量 $ip 未用双引号括起来,这可能会妨碍正确解释。

建议的解决方案:

用户的问题还建议了替代解决方案:

function pingAddress($ip) {
    $pingresult = exec("/bin/ping -n 3 $ip", $outcome, $status);
    if (0 == $status) {
        $status = "alive";
    } else {
        $status = "dead";
    }
    echo "The IP address, $ip, is  ".$status;
}

说明:

此函数:

  1. 使用 exec 函数执行带 -n 3 选项的 ping 命令,发送三个 ping 请求。
  2. 检查 ping 命令的退出状态,其中状态 0 表示 ping 成功(即 IP 地址处于活动状态)。
  3. 使用 $status 变量确定 IP 地址是活动还是失效,并相应地显示结果。

以上是为什么无论 IP 地址如何,我的 PHP ping 函数总是返回“死”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn