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