因为几天后我使用他们的eutils wsdl服务(Entrez Utils)在我开发的php soap(php soap扩展,NOT nusoap)搜索界面到PubMed文献服务时遇到问题。
在问题出现之前我使用了低级函数__soapcall()中返回的数组,它运行良好,为我的模糊代理模块提取一些信息,将其转换为xml并将其传递给我的xml / xsl模板引擎。
上周,出于某种原因,我从__soapcall()函数中获得了“似乎我们没有xml文档”的异常,并带有一些搜索词。所以我决定在SoapClient调用中打开异常和跟踪选项,并开始使用低级函数__getLastResponse()来查看发生了什么。因此,我得到的错误更少,但仍然存在某些搜索问题。返回的xml字符串被剪切,因此不完整,看起来返回的字符串很大(有时超过180kb)。我无法进一步处理结果,因为DomDocument函数会抛出带有不完整和无效xml响应的异常。我还尝试将参数设置为压缩(SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP)没有成功,因为我认为它也可能是作为响应返回的块数据。
好吧,我不知道如何解决这个问题,现在是第3天。我将搜索结果数量减少到每个请求10个结果(以前的20个结果),行为变得更好但仍然存在错误,因为xml响应被截断。我的基本问题是,限制__getLastResponse()的字符串长度是什么。我没有更新或升级任何软件包,在问题出现之前我也没有对代码进行软件更改。在我的开发服务器上以及生产服务器上(literatur.ucb.de)给了我同样的问题。
如果他们对eutils进行了更改,我通过电子邮件向Pubmed发送了帮助或信息,到目前为止还没有回答,在他们的主页上也没有任何变更通知。
任何提示我还可以尝试让Pubmed Soap请求再次稳定运行请告诉我。我很欣赏任何提示。
平台(开发)是Ubuntu Linux mit PHP 5.2.4-2ubuntu5.10。