2010-11-08 53 views
1

我有一个SOAP WS,可以通过PHP的SoapClient(使用Zend Framework的Soap Client包装)访问。 web服务通过https运行,并且通话需要相当长的时间(每个几分钟)。SSL:破损的管道使用PHP的SoapClient访问SOAP服务

我正在通过SoapClient的相同实例一个接一个地进行4个调用。然而,经过一段时间的运行,并在随机点(未八方通在同一个方法调用),我看到了以下错误:

Warning: SoapClient::__doRequest(): SSL: Broken pipe in pathtomyfile

回答

3

我仍然不知道为什么会这样,但我有一些额外的见解和解决方法。

问题出现的时候,在一个耗时很长的SOAP调用运行之后,我尝试为另一个请求使用相同的连接。第一个会成功,但在新的通话中,错误会上升。

这意味着,只要您不需要连接是相同的(通常是SOAP Web服务中的情况),您可以重置呼叫之间的连接。不是最有效的资源利用方式,而是完美无缺的工作。

2

我发现,加入

'keep_alive' => false 

选项

new SoapClient($url, $options) 

解决这个问题对我来说。

这里有一个相关的错误报告,但除此之外关于它的文档很少:https://bugs.php.net/bug.php?id=60329