PHP从Soap响应中保存XML,即使它因超时而失败

时间:2014-10-15 23:05:06

标签: php xml soap

我想将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 

?>

0 个答案:

没有答案