Owe*_*wen 188
您可以安全地删除WSDL缓存文件.如果您希望阻止将来的缓存,请使用:
ini_set("soap.wsdl_cache_enabled", 0);
Run Code Online (Sandbox Code Playgroud)
或动态:
$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
Run Code Online (Sandbox Code Playgroud)
use*_*435 21
删除服务器上/ tmp文件夹中的所有wsdl*文件.
WSDL文件缓存在php.ini中定义的所有缓存文件的默认位置.与会话文件位置相同.
sta*_*abm 12
我建议在wsdl url中使用cache-buster.
在我们的应用程序中,我们在wsdl url中使用SVN Revision id,以便客户端立即知道更改结构.这适用于我们的应用程序,因为每次我们更改服务器端时,我们还需要相应地调整客户端.
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
Run Code Online (Sandbox Code Playgroud)
这需要正确配置svn.不在所有存储库上,默认情况下启用此功能.
如果您不对两个组件(服务器,客户端)负责,或者您不使用SVN,您可能会发现另一个指标可用作wsdl网址中的缓存破坏程序.
Mar*_*afs 11
如果您已经部署了代码或无法更改任何配置,则可以从wsdl中删除所有临时文件:
rm /tmp/wsdl-*
Run Code Online (Sandbox Code Playgroud)
只是出于文档的原因:
我现在(2014 年)观察到,在所有这些有价值且正确的方法中,只有一种是成功的。我已向服务器上的 WSDL 添加了一个函数,但客户端无法识别该新函数。
WSDL_CACHE_NONE参数没有帮助。soap.wsdl_cache_enabledPHP ini 有帮助。我现在不确定它是否是所有三者的组合,或者是否某些功能实现得非常糟糕,因此它们可能随机地保持无用,或者是否存在某些不理解的功能层次结构。
最后,希望您必须检查所有三个才能解决此类问题。