5

クライアントとサーバーの SOAP オブジェクトを正常に作成しましたが、サーバー側でのキャッシュと思われるものに実際の問題があります。次のように、クライアント スクリプトとサーバー スクリプトの両方ですべてのキャッシュを無効にしています。

ini_set("soap.wsdl_cache", "0");
ini_set("soap.wsdl_cache_ttl", "0");
ini_set("soap.wsdl_cache_enabled", "0");

しかし、何をしてもサーバーからまったく同じ応答が返されるようです。オブジェクト名を変更し、WSDL 名を変更し、オブジェクト名にタイムスタンプを追加して、呼び出しごとに同じにならないようにしました。それから突然、約 10 分または 20 分後に更新され、別の応答が得られます。私は phpinfo() をチェックしましたが、キャッシング ttl は 1 日 (グローバル) であると書かれているので、それよりも間違いなく短いと思います。

あらゆる種類のキャッシングを無効にするアイデアはありますか?

4

2 に答える 2

0

オプションを SOAP オブジェクトに渡してみることができます。

$client = new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE));

$server = new SoapServer("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE));

これで問題が解決しない場合は、wsdl キャッシュ ファイルをクリアしてみてください。Linux では、通常 /tmp フォルダーにあり、名前はwsdl-. このファイルをクリアしても解決しない場合は、他のキャッシュが使用されている可能性がありますか? それはただの SoapServer ですか、それともいくつかの追加のライブラリが使用されていますか?

于 2012-12-11T23:28:31.150 に答える
0

私は同じ問題を抱えていて、設定しようとしていました:

  new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE))

何もしませんでした。

最後に、サーバーが wsdl ファイルをキャッシュするために使用した /tmp フォルダーを見つけて、それを削除しました。修理済み!

/tmp フォルダーは仮想ドメインの /tmp フォルダーではなく、サーバー ディレクトリのルートにありました。

于 2014-10-31T15:58:23.137 に答える