传递过多数据时,SOAPClient会引发错误

时间:2009-12-07 15:28:35

标签: php soap

我有一个简单的类,它返回select类的结果。 db用户只有select权限。

该类通过SOAP提供,因此第三方可以查询数据库以创建报告工具。

问题是当我尝试选择太多行时,PHP SoapClient会抛出SoapFault异常。在一张有大约10个带有小块数据的表上,我只能选择大约80行 返回Soap响应的总大小为134KB,显然不是很多......

我已尝试将ini参数设置为max_input_timememory_limitmax_execution_time,但没有任何问题......

为什么SoapClient失败?

抛出错误:(Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document

1 个答案:

答案 0 :(得分:0)

SoapClient类有错误。我无法修复它。我设置了他们在手册中写的default_socket_timeout,但唯一的影响是,SoapFault消失了。

我用curl和手工制作的xml用这些设置解决了这个问题:

ini_set('default_socket_timeout',120); //2 minutes for downloading the data
ini_set('memory_limit','256M'); //increase memory limit
ignore_user_abort(true); //abort user ignore
set_time_limit(0); //set execution time infinite
curl_setopt($connection,CURLOPT_TIMEOUT,120); //2 minutes timeout

SoapClient和SoapServer类有很多错误(超时失败,没有xsd验证等等),所以如果可以,那么选择另一种选择。