我试图通过远程主机上的https调用WS:远程端口,我得到:
使用PHP5 SoapClient;我可以通过执行$client->__getFunctions()
来获取函数列表,但是当我调用$client->myFunction(...)
时,总是会遇到此错误。
我已经在google上搜索,发现在php.ini中增加default_socket_timeout
应该可以解决它,但是没有用。
谁能建议我一个解决方案?
编辑:这是代码:
$wsdl="myWSDL";
$client = new SoapClient($wsdl,array('connection_timeout'=>5,'trace'=>true,'soap_version'=>SOAP_1_2));
var_dump($client->__getFunctions());
try {
$response=$client->myFunction("1","2","3");
} catch (SoapFault $fault) {
var_dump($fault);
}
}
总是以错误结尾。
我该如何解决这个问题?
最佳答案
当SOAP响应超出default_socket_timeout
值时,通常会看到此错误。 (See this link。)
从SoapClient构造函数中注意到:connection_timeout
选项用于定义连接到服务的超时值,而不是用于其响应的超时。
您可以像这样增加它:
ini_set('default_socket_timeout', 600); // or whatever new value you want
这应该告诉您超时是否是问题所在,或者您是否有其他问题。请记住,您不应将用作永久解决方案,而应在继续调查SOAP服务为何响应如此缓慢之前先查看它是否摆脱了错误。如果服务持续缓慢,则可能需要考虑脱机/批处理。