私は Web サービスを初めて使用します。不可解にランダムな SoapClient コンストラクターの実行時間が発生しています。通常、呼び出しには約 10 秒かかります。1 秒もかからないこともありますが、それほど頻繁ではありません。
PHP: SoapClient コンストラクターが非常に遅い (3 分かかる)
私の状況は上記のスレッドのものと似ていますが、それらで提供された解決策では問題が解決しませんでした。
// config params
$params = array(
'trace' => 1,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_MEMORY
);
// this call takes about 10 seconds to remote WSDL
$soap_client = new SoapClient(WSDL_URL,$params);
さまざまな wsdl キャッシング パラメータを試してみたところ、WSDL_CACHE_MEMORY が最速であることがわかりました。他のキャッシュ オプションを使用する場合、呼び出しには平均で約 25 秒かかります。
複数のユーザーを使用していません。
php.ini で wsdl_cache_dir を Windows に適したディレクトリに変更しました。
私の質問は 2 つあります。
SoapClient コンストラクターの実行時間がランダムに見えるのはなぜですか? 通常はもっと時間がかかるのに、ほんの一瞬しかかからないことがあるのはなぜですか? なぜこのように動作するのかを知るために実行できるテストはありますか?
ページの訪問者がページからページに移動するときに、新しい SoapClient を作成して WSDL を再度解析する必要がないように、SoapClient オブジェクトまたはリソースをキャッシュ/保存する必要がありますか? それを達成するための推奨されるアプローチは何ですか?
正しい方向への助けや微調整は、非常に義務付けられています。ありがとうございました。