我使用PHP SoapClient连接到Web服务。
$this->client = new SoapClient($this->wsdl, array('trace'=>true, 'cache' => WSDL_CACHE_DISK));
我每天都有很多请求,有时我会从Soap收到以下错误异常:
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://ws-rca.24broker.ro/?wsdl' : failed to load external entity "http://www.example.ro/?wsdl" in ...
我再说一遍,这不是经常发生的事情。这种情况持续了几秒钟。
因此,我想检查在错误发生的那一刻,是否可以访问WSDL,所以在try/catch语句中,我使用了一个带有上述url的file_get_contents,并且似乎WSDL已经启动;运行,因为我可以在错误发生的确切时刻获得XML代码。
所以我尝试了:
- 与处理上述问题的托管公司的IT人员进行了交谈URL;他们说他们的WSDL已经启动&当时正在运行
- 检查了我所有的服务器日志文件;除错误外,与上述错误无关
有人知道发生了什么吗?谢谢
查看php.ini,如果:
default_socket_timeout = 0;
用类似的东西来改变它
default_socket_timeout = 300;
您也可以使用此功能http://php.net/manual/en/function.socket-set-timeout.php.希望能有所帮助。