web-dev-qa-db-ja.com

PHPでは、WSDLキャッシュをクリアするにはどうすればよいですか?

WSDLキャッシュが保持されるphp_info()を介して(/tmp)、ただし、WSDLで始まるすべてのファイルを削除しても安全かどうかは必ずしもわかりません。

はい、私はshouldからすべてを削除することができます/tmp、ただし、すべてのWSDLファイルを削除した場合、これがどのような影響を与えるかはわかりません。

83
jW.

WSDLキャッシュファイルを安全に削除できます。将来のキャッシュを防止する場合は、次を使用します。

ini_set("soap.wsdl_cache_enabled", 0);

または動的に:

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
182
Owen

サーバーの/ tmpフォルダーにあるすべてのwsdl *ファイルを削除します。

WSDLファイルは、php.iniで定義されているすべてのキャッシュファイルのデフォルトの場所にキャッシュされます。セッションファイルと同じ場所。

21
user3259435

Wsdl URLでキャッシュ無効化を使用することをお勧めします。

アプリでは、wsdl URLでSVNリビジョンIDを使用しているため、クライアントは構造の変化をすぐに認識できます。これは、サーバー側を変更するたびに、それに応じてクライアントを調整する必要があるため、アプリで機能します。

$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');

これには、svnを適切に構成する必要があります。すべてのリポジトリでこれがデフォルトで有効になっているわけではありません。

両方のコンポーネント(サーバー、クライアント)に責任を負わない場合、またはSVNを使用しない場合は、wsdl urlでキャッシュ無効化として使用できる別のインジケーターを見つけることができます。

12
staabm

すでにコードをデプロイしているか、構成を変更できない場合は、wsdlからすべての一時ファイルを削除できます。

rm /tmp/wsdl-*
10
Markomafs

文書化のためだけに:

私は今(2014)、これらすべての価値ある正しいアプローチから、成功したのは1つだけであると観察しました。サーバー上のWSDLに関数を追加しましたが、クライアントは新しい関数を認識していませんでした。

  • パラメーターにWSDL_CACHE_NONEを追加しても解決しませんでした。
  • キャッシュ無効化を追加しても役に立ちませんでした。
  • soap.wsdl_cache_enabledをPHP iniに設定しました。

これが3つすべての組み合わせなのか、いくつかの機能がひどく実装されてランダムに役に立たないままなのか、または理解されない機能の階層があるのか​​がわかりません。

最後に、これらの問題を解決するには、3つすべてをチェックする必要があることを期待してください。

4
peter_the_oak

php.iniファイルを編集し、soap.wsdl_cache_enabledを検索して、値を0に設定します

[soap]
; Enables or disables WSDL caching feature.
; http://php.net/soap.wsdl-cache-enabled
soap.wsdl_cache_enabled=0
0
Kiran Reddy