如何在php中使用WSDL定义备用soap web服务

如何在php中使用WSDL定义备用soap web服务,php,soap,server,wsdl,client,Php,Soap,Server,Wsdl,Client,我在不同的服务器上有一个soap服务器和一个soap客户端。我的问题是,我的soap服务器的internet链接频繁摆动,因此我决定为soap服务器使用另一个internet链接,所以如果主链接关闭,我将移动到备份链接,反之亦然。但我如何在我的PHPSOAP客户机中解决这种情况,即当IP更改时,wsdl的地址会自动更改,而不是每次手动更改。 例如,我有以下两个不同IP的WSDL链接 <?php $url1 = "http://x.x.x.x/api?wsdl"; //primary lin

我在不同的服务器上有一个soap服务器和一个soap客户端。我的问题是,我的soap服务器的internet链接频繁摆动,因此我决定为soap服务器使用另一个internet链接,所以如果主链接关闭,我将移动到备份链接,反之亦然。但我如何在我的PHPSOAP客户机中解决这种情况,即当IP更改时,wsdl的地址会自动更改,而不是每次手动更改。 例如,我有以下两个不同IP的WSDL链接

<?php
$url1 = "http://x.x.x.x/api?wsdl"; //primary link IP
$url2 = "http://a.a.a.a/api?wsdl"; //back up link IP

$client = new SoapClient($url1 or $url2,array("trace"=>1,"exceptions"=>0));   //Now defining a client with url which is currently active.

?>


如何在检查soap服务器上的活动internet链接后定义客户端?

对于一个简单的解决方案,您可以只检查主wsdl是否可以访问,如果不能,则使用辅助wsdl:

$url1 = "http://x.x.x.x/api?wsdl";
$url2 = "http://a.a.a.a/api?wsdl";

try {
  $headers = @get_headers($url1);
  if(!empty($headers)) {
    $wsdl = $url1;
  } else {
    $wsdl = $url2;
  }
  $client = new SoapClient($wsdl, array("trace"=>1,"exceptions"=>0));
} catch (Exception $e) {

}