我有一个简单的类,它返回select类的结果。 db用户只有select权限。
该类通过SOAP提供,因此第三方可以查询数据库以创建报告工具。
问题是当我尝试选择太多行时,PHP SoapClient会抛出SoapFault异常。在一张有大约10个带有小块数据的表上,我只能选择大约80行 返回Soap响应的总大小为134KB,显然不是很多......
我已尝试将ini参数设置为max_input_time
,memory_limit
和max_execution_time
,但没有任何问题......
为什么SoapClient失败?
抛出错误:(Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document
答案 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验证等等),所以如果可以,那么选择另一种选择。