php 用nusoap调用 Java 的webservice
php.ini 的内存1024M java 1.5G
error: XML error parsing SOAP payload on line 1 : No memory
请问这个错误怎么修改?
寻找原因
nusoap_client 类 --> function call --> function send -> class soap_transport_http
////////////
$http->send($msg,$timeout,$response_timeout,$this->cookies); data
$this->request = $http->outgoing_payload;
$this->response = $http->incoming_payload;
///////////
-->nusoap_client 类中 parseResponse($data) --> class nusoap_parser($data) ->
nusoap_parser(($xml)-> xml_parse($this->parser,$xml,true)
发现xml_parse 结果为false,发现问题。将$xml put 到文件里,文件名:xml.txt 大小10.7M
$xmlUrl = "./xml.txt";$xmlparser = xml_parser_create();
$data = file_get_contents($xmlUrl);
if(xml_parse($xmlparser, $data)){
echo "1";
}else{
die( print "ERROR: " . xml_get_error_code($xmlparser) . "
" . xml_error_string(xml_get_error_code($xmlparser)) . "
" . "Line: " . xml_get_current_line_number( $xmlparser) . "
" . "Column: " . xml_get_current_column_number($xmlparser) . "
");
}
解决方案猜想:
1.设置xml parser 的内存
2.修改nusoap文件:将nusoap关于解析XML的函数全部替换成其他解析方式
3.修改nusoap文件:将数据存入文件中,遍历读取数据!
4. nusoap 换成 php的soap扩展
5.Java服务器传输数据格式为json
6.减小数据量 (是最简单的,也是最没用的)
先看看xml parser 是否有关于内存的配置
然后并没有找到设置Xml parser 的内存的函数,无奈放弃!
但是2-3 实现起来太费时,决定用第四种方案!直接用php 的soap扩展取的数据。
哪位大神知道怎么设置xml parser的内存,记得留言啊。