3

SOAP 呼び出しに大きく依存するプロジェクトに取り組んでいます。問題は、ロード時間が非常に長いことです。

$client = new SoapClient("https://link.to.wsdl");
$client = $client->GetDestination(array(
"parameter1" => $param1,
"parameter2" => $param2
));

コードの最初の部分 (オブジェクト $client の開始) には約 2 秒かかり、非常に許容範囲内です。ただし、getDestination を呼び出すと、約 10 秒の読み込み時間が追加されます。これは、私が呼び出すすべての get または set メソッドにあります。

このコードは php 5 で実行されています。メソッドは .net 4.x で記述されています。

これがなぜなのか、どうすれば解決できるのか誰か知っていますか?

編集: ping 統計 10 個のパケットが送信され、10 個のパケットが受信され、0.0% のパケット損失ラウンドトリップ min/avg/max/stddev = 1.086/2.320/3.624/1.157 ms

4

3 に答える 3

4

soap.wsdl_cache_enabled最初に、 ini 値またはコンストラクター$optionsのパラメーターを使用して WSDL キャッシングを有効にする必要があります。SoapClientこれにより、PHPがwsdlを何度もダウンロードするのを防ぎ、コンストラクターを高速化します(2秒も非常に長くなります)

メソッド呼び出し自体を高速化するには、さらに情報が必要です。Wireshark を使用して、アプリと SOAP サーバー間のネットワーク通信をイントロスペクトできますか?

于 2013-04-16T08:24:32.737 に答える
3

コードと同じマシン上の SOAP サービスに接続する際にも、同様の問題がありました。URLhttp://127.0.0.1/の代わりに使用することで解決しました。http://localhost/

于 2015-12-15T19:47:20.377 に答える