2011-12-07 8 views
1

私は初めてSOAPを使用しています(しかし、私はPHPでかなり役に立ちます)。私の問題は、大きなxmlをsoap(50 MB以上の大きさ)で送信するサーバに接続し、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サービスになるとZend_Soap_Clientオブジェクトを使用しています。これはZendフレームワークのパッケージに含まれています。私はそれがずっと涼しくて使いやすいと信じています。 :) –

答えて

0

別の良いアプローチは、あなたが使用する関数上で、レスポンスのサイズを制御できるパラメータを探すことです。レスポンスサイズは最大5メガバイトにしたいだけです。私はそれを説明するのが少し難しいと思うが、ページ1の5つのアイテム、ページ2の5つのアイテム、ページ2の2つの別の5つのアイテムなど、各ページを制限するページネーションの概念で行うことがある。それがうまくいかない場合や、そうすることができない場合、最後のオプションは、あなたが本当に必要なものをサポートできるようにサーバをアップグレードすることです。これはもっと重い選択肢かもしれませんが、それ以外の方法がない場合、あなたの問題を解決するための最も現実的な選択肢です。 :)

関連する問題