加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP SoapClient超时错误处理程序

发布时间:2020-12-13 17:43:25 所属栏目:PHP教程 来源:网络整理
导读:我正在使用SoapClient调用一些Web服务.我正在寻找一种机制,可以帮助我在Web服务脱机或关闭时向用户显示一些错误. 因为在向用户显示任何错误之前我必须等待一段时间(15秒).我在这样的SoapClient中添加了connection_timeout,用于超时. $this-client = new Soap
我正在使用SoapClient调用一些Web服务.我正在寻找一种机制,可以帮助我在Web服务脱机或关闭时向用户显示一些错误.

因为在向用户显示任何错误之前我必须等待一段时间(15秒).我在这样的SoapClient中添加了connection_timeout,用于超时.

$this->client = new SoapClient($clienturl,array('trace' => 1,'exceptions'=> 1,'connection_timeout'=> 15));   //$clienturl is webservice url

同样在页面的顶部,我添加了这一行,

ini_set("default_socket_timeout",15); // 15 seconds

在特定的超时间隔后,我得到了不同的SOAP-ERROR,

SOAP-ERROR: Parsing WSDL: Couldn't load from $clienturl

所以我正在寻找一个错误处理程序来处理这些SOAP-ERROR,以便以人类可读的格式向用户显示那些“服务器已关闭,再过一段时间后重试”的用户.或者有没有办法处理超时错误?

解决方法

你可以把它放在try / catch中

try {
    $time_start = microtime(true);
    $this->client = new SoapClient($clienturl,'connection_timeout'=> 15
    ));
} catch (Exception $e) {
    $time_request = (microtime(true)-$time_start);
    if(ini_get('default_socket_timeout') < $time_request) {
        //Timeout error!
    } else {
        //other error
        //$error = $e->getMessage();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读