2012-12-09 21 views
5

クライアントとサーバーのSOAPオブジェクトを正常に作成しましたが、サーバー側にキャッシュすると実際に問題があります。私は、クライアントとサーバーの両方のスクリプト上のすべてのキャッシュを無効にしています:PHP 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日(グローバル)であると言われているので、それは間違いなく短いと思います。

どのような種類のキャッシュを削除するかについてのアイデアはありますか?

答えて

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なのか、それともいくつかの追加のlibsが使われていますか?

+0

Thanks $ server = new SoapServer( "some.wsdl"、array( 'cache_wsdl' => WSDL_CACHE_NONE));私のために働いた –

0

私は同じ問題があったが、設定しようとしている:

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

は何もしませんでした。

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

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

関連する問題