我想将SOAP响应保存到XML文件,但即使内存限制设置为500M并且超时为900,它也会因许多请求错误而失败。根据肥皂服务的手册,他们建议增加内存和时间限制以避免这种情况,但我认为500M / 900已经非常高了。
我看到我的脚本正在创建文件,直到失败它将数据写入该文件(当时大约为52MB),但是当请求失败时,文件中的数据会被错误消息覆盖。
即使请求失败,有没有办法将已经正确写入的数据保存到文件中?
我像这样保存XML:
<?php
ini_set('memory_limit', '500M');
ini_set('max_execution_time','900');
ini_set('default_socket_timeout','900');
$pid='39';
$auth = 'ABCD1234-EFGH5678';
$client = new SoapClient('http://www.example.com/services/service.asmx?WSDL',
array("trace" => 1,"exceptions" => 0,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS));
$result=$client->GetStuff(array('pid'=>$pid, 'authcode'=>$auth));
$xmlsoap = $result->GetStuffResult->any;
$xml = simplexml_load_string($xmlsoap);
$doc = new DOMDocument();
$doc->formatOutput = TRUE;
$doc->loadXML($xml->asXML());
$newxml = $doc->saveXML();
$outputFilename = 'output'.date('Ymd').'.xml';
$handle = fopen($outputFilename, "w");
fwrite($handle, $newxml);
fclose($handle);
echo 'ready'; //this echo is here only for testing purposes
?>