如何在Yii2中检查IP状态

时间:2017-12-02 09:51:07

标签: php url yii2 ip

我有一个Web服务,它部署在服务器上。 web-service工作正常。现在我想做的是在另一台服务器上部署相同的Web服务。然后在我的客户端站点,我想检查如果任何服务器正在运行而不是调用。

我想做那样的事情

$Ip1= "192.168.1.1/GetSomeData";
$Ip2= "202.47.22.1/GetSomeDate";

现在我想查看Ip1是否running

if(Ip1=="running")
{
     //call the web-service

}//if the Ip1 is not working
else if (Ip2=="running")
{
   //call the web-service

}
else
{
   //do nothing
}

我如何在Yii2中实现这一目标?

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

如果网络服务在您的控制之下,您可以制作一个回音方法,只需检查它是否使用正常的网络服务电话回复您的答案。

另一方面,您可以使用curl检查Web服务器上的现有文件或服务,如this post中所示:

 function isRunning($url=NULL)  
 {  
    if($url == NULL) return false;  
    $ch = curl_init($url);  
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);  
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    $data = curl_exec($ch);  
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
    curl_close($ch);  
    return ($httpcode>=200 && $httpcode<300) ? true : false;
}  

当然,您的代码看起来像这样:

if(isRunning(ipAddress1))
{
     //call the web-service

}//if the Ip1 is not working
else if (isRunning(ipAddress2))
{
   //call the web-service

}
else
{
   //do nothing
}

其中ipAddress是该服务器上的文件或路径。还有很多其他方法。如果您有一个开放端口,可以使用fsockopen,或使用shell_exec获取ping结果.... 希望我的回答有所帮助。