在PHP中确定IP是否在线?

时间:2011-06-23 20:07:51

标签: php ping

我有一些IP(托管大型二进制文件的其他服务器)及其静态IP。

当用户点击链接时,我想ping每个服务器,直到找到一个在线并将浏览器重定向到适当的URI。如果没有服务器在线,则应显示错误。

6 个答案:

答案 0 :(得分:8)

看看这个.... Ping site and return result in PHP

function availableUrl($host, $port=80, $timeout=10) { 
  $fp = fSockOpen($host, $port, $errno, $errstr, $timeout); 
  return $fp!=false;
}

//Return "true" if the url is available, false if not.
echo availableUrl("www.google.com");

答案 1 :(得分:1)

您可以使用PHP函数exec()

对命令行进行显式命令
exec("ping server");

从中获取结果,然后无论如何都要解析它。

$my_output = array();
exec("pwd", $my_output);

var_dump($my_output);

答案 2 :(得分:0)

我不确定这是一个php问题,但在命令行中只是这样做:

ping IP_ADDRESS

答案 3 :(得分:0)

您可以使用this one等库来从PHP中执行ping请求。

shell_exec也会这样做,但会将输出解析给你。

答案 4 :(得分:0)

如果要回显正在执行的内容,只需将其放入变量中,然后回显该变量即可。请注意,如果您exec("ping -c 5 google.com"),则需要将其设置为$output .= exec("ping -c 5 google.com");。使用.=设置变量可让您在变量中设置多个设置。 $output = null; $output = exec("pwd"); echo $output; 或者您可以使用shell_exec("pwd"),这取决于。 很多人都会批评我编写代码的方式。我知道 - 它不是专业的。但它的工作原理! :)

答案 5 :(得分:-1)

我使用fsockopen()来验证即使是在端口上侦听的服务,也不仅仅是主机。