我有一个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中实现这一目标?
任何帮助都将受到高度赞赏。
答案 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结果.... 希望我的回答有所帮助。