PHP用のNuSoapクラスを使用してSOAP Webサービスを呼び出すコードを開発しました。主にPHP 5のネイティブクラスではなく、NuSoapを使用しています。なぜなら、このコードが共有Webサーバーにインストールされている場合、追加の前提条件を追加したくないからです。コードは、私のマシン上で正常に動作します:NuSoapを使用するとローカルマシンでは動作しますがサーバーでは動作しません
require DOCROOT.'modules/nbn_species_dict_sync/lib/nusoap.php';
$client = new nusoap_client('http://www.nbnws.net/ws_3_5/GatewayWebService?wsdl', true);
$query1 = '<TaxonReportingCategoryListRequest xmlns="http://www.nbnws.net/TaxonReportingCategory" registrationKey="'.$key.'"></TaxonReportingCategoryListRequest>';
$response = $client->call('GetTaxonReportingCategoryList', $query1);
私は、仮想サーバー上でこれを置くのではなくローカルで実行し、最後の行は、ちょうどそのPHPの爆弾うち約10秒間ハングする場合。例外は発生せず、PHPエラーもありません(try..catchとset_error_handlerを使って試してみました)。
私の最初の反応は、サーバー上で実行されているファイアウォールが送信要求をブロックしている可能性がありましたが、他の場所でcUrlを正常に使用していて、ここでファイアウォールが動作していないと確信しています。 $ client-> use_curlを呼び出すとNuSoap呼び出しに何の違いもありませんが、それでも動作しません。
これがなぜ起こっているのか、ご意見をいただければ幸いです。
ほとんどの場合、memory_limitの設定はlocalhostとserverで異なり、サーバはメモリを使い果たします。 –
提案していただきありがとうございます。メモリの上限を96Mに上げましたが、これは$ client-> setGlobalDebugLevel(0)とも呼ばれる場合にのみ有効です。デバッグをオフにしても64Mで十分ではありませんでした。私はちょうどチェックして、Webサービスは〜2MBのデータで応答しています。この場合、メモリ使用量が非常に高いことは奇妙に思えます。 – Johnvb
私も同様の問題が発生しています。私は、nuSOAPが処理する256MB以上のメモリを占有したいというWebサービスからの5MBのデータ応答を持っています。 – Travis