代码之家  ›  专栏  ›  技术社区  ›  Johnco

使用php的soapclient访问soap服务的中断管道

  •  1
  • Johnco  · 技术社区  · 14 年前

    我有一个SOAP WS,可以通过php的soap client(用zend框架的soapclient包装)访问它。WebService通过HTTPS运行,调用需要相当长的时间(每个时间几分钟)。

    我正在通过同一个soapclient实例进行4次调用。但是,在运行一段时间后,在一个随机点(并非所有方法调用都是相同的),我看到以下错误:

    警告:soapclient::uu dorequest():ssl:PathTomyFile中的管道已损坏

    2 回复  |  直到 8 年前
        1
  •  3
  •   Johnco    14 年前

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

    当运行了很长时间的SOAP调用后,我试图对另一个请求使用相同的连接时,就会出现问题。第一个会成功,但在新的调用后,错误会出现。

    这意味着,只要您不需要相同的连接(在SOAP Web服务中通常是这样),就可以重置调用之间的连接。不是最有效地利用资源,但会毫无瑕疵地发挥作用。

        2
  •  2
  •   ywarnier    8 年前

    我发现添加

    'keep_alive' => false
    

    选择

    new SoapClient($url, $options)
    

    帮我解决了这个问题。

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

    推荐文章