95

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

はい、からすべてを削除するだけでよいはず/tmpですが、すべての WSDL ファイルを削除すると、他にどのような影響があるかわかりません。

4

6 に答える 6

204

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

ini_set("soap.wsdl_cache_enabled", 0);

または動的に:

$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
于 2008-11-19T21:54:24.473 に答える
13

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

rm /tmp/wsdl-*
于 2014-04-16T21:30:38.787 に答える
12

wsdl url でキャッシュバスターを使用することをお勧めします。

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

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

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

両方のコンポーネント (サーバー、クライアント) を担当していない場合、または SVN を使用していない場合は、wsdl URL でキャッシュバスターとして利用できる別のインジケーターを見つけることができます。

于 2013-08-01T10:34:00.163 に答える
4

ドキュメントの理由から:

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

  • パラメータへの追加WSDL_CACHE_NONEは役に立ちませんでした。
  • キャッシュバスターを追加しても役に立ちませんでした。
  • soap.wsdl_cache_enabledPHP iniへの設定が役立ちました。

それが 3 つすべての組み合わせなのか、一部の機能がひどく実装されているために無作為に役に立たないままになっているのか、理解されていない機能の階層があるのか​​どうかはわかりません。

最後に、このような問題を解決するには、3 つすべてをチェックする必要があると考えてください。

于 2014-07-26T15:09:37.647 に答える