2011-12-07 56 views
1
寫回應

這是我第一次使用SOAP(但我在PHP中很不錯)。我的問題是,我連接到一個服務器,通過soap(大於50mb大)向我發送大型xml,我不知道PHP的SoapClient用於解析xml,但是恐怕會讓我的腳本用完記憶。PHP SoapClient對文件

我可以寫SOAP響應到文件,所以我最終沒有使用太多的內存?或者這甚至是威脅?

通常情況下,我會將響應寫入文件,然後使用XMLReader讀取它,但現在我只獲取解析的響應。

$client = new SoapClient("http://....wsdl",array(
    'login' => 'test', 
    'password' => 'test')); 
$something = $client->__soapCall('getThings',array()); 
var_dump($something); 
die(); 
+0

怎麼樣努力繼承SoapClient的並覆蓋從服務器接收XML響應的功能,那麼你可以做你想要的一切,但我相信你應該熟悉這個對象以及(所有它的方法和他們如何爲對象工作)。 –

+0

@colighto我在哪裏可以找到關於課程的更多信息?也許得到它的定義?我試過php.net,但它不是很有幫助 –

+0

嘗試此鏈接它有這個對象的所有方法的列表http://php.net/manual/en/book.soap.php,你需要,但無論如何,當它涉及到soap webservice時,我使用了Zend_Soap_Client對象,它帶有Zend框架包,我相信它更酷更容易使用,它們確實有一個關於它的使用的良好文檔。 :) –

回答

0

恐怕之前,你可以把它寫在它已經佔據在你的記憶一定的空間和更糟糕的是會做很多流程並佔據更多的空間上的內存,而不是,我認爲一個單獨的文件另一個好方法是找一個參數的功能,您使用的是可以控制像我只想有一個最大5MB響應大小的每個響應的響應的大小。我覺得有點難以解釋,但這是分頁概念的一種做法,例如在第1頁上顯示5個項目,在第2頁上將每個頁面限制爲5個項目,另外5個項目等等。如果這不起作用或不可能這樣做,那麼最後的選擇是升級你的服務器,以支持你真正需要的東西我知道這可能是一個更重的選擇,但如果沒有其他方式,那麼我認爲這會成爲解決您問題的最可行方案。 :)