WSDLキャッシュが保持されるphp_info()
を介して(/tmp
)、ただし、WSDLで始まるすべてのファイルを削除しても安全かどうかは必ずしもわかりません。
はい、私はshouldからすべてを削除することができます/tmp
、ただし、すべてのWSDLファイルを削除した場合、これがどのような影響を与えるかはわかりません。
WSDLキャッシュファイルを安全に削除できます。将来のキャッシュを防止する場合は、次を使用します。
ini_set("soap.wsdl_cache_enabled", 0);
または動的に:
$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
サーバーの/ tmpフォルダーにあるすべてのwsdl *ファイルを削除します。
WSDLファイルは、php.iniで定義されているすべてのキャッシュファイルのデフォルトの場所にキャッシュされます。セッションファイルと同じ場所。
Wsdl URLでキャッシュ無効化を使用することをお勧めします。
アプリでは、wsdl URLでSVNリビジョンIDを使用しているため、クライアントは構造の変化をすぐに認識できます。これは、サーバー側を変更するたびに、それに応じてクライアントを調整する必要があるため、アプリで機能します。
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
これには、svnを適切に構成する必要があります。すべてのリポジトリでこれがデフォルトで有効になっているわけではありません。
両方のコンポーネント(サーバー、クライアント)に責任を負わない場合、またはSVNを使用しない場合は、wsdl urlでキャッシュ無効化として使用できる別のインジケーターを見つけることができます。
すでにコードをデプロイしているか、構成を変更できない場合は、wsdlからすべての一時ファイルを削除できます。
rm /tmp/wsdl-*
文書化のためだけに:
私は今(2014)、これらすべての価値ある正しいアプローチから、成功したのは1つだけであると観察しました。サーバー上のWSDLに関数を追加しましたが、クライアントは新しい関数を認識していませんでした。
WSDL_CACHE_NONE
を追加しても解決しませんでした。soap.wsdl_cache_enabled
をPHP iniに設定しました。これが3つすべての組み合わせなのか、いくつかの機能がひどく実装されてランダムに役に立たないままなのか、または理解されない機能の階層があるのかがわかりません。
最後に、これらの問題を解決するには、3つすべてをチェックする必要があることを期待してください。
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