在PHP中,如何清除WSDLcaching?

在通过php_info()来保存WSDLcaching的地方( /tmp ),但是我不一定知道删除所有以WSDL开头的文件是否安全。

是的,我应该只能删除/tmp所有内容,但是我不知道如果删除所有的WSDL文件,这可能会产生什么影响。

您可以安全地删除WSDLcaching文件。 如果你想防止未来的caching,使用:

 ini_set("soap.wsdl_cache_enabled", 0); 

或dynamic地:

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

删除服务器上的/ tmp文件夹中的所有wsdl *文件。

WSDL文件caching在您的默认位置,用于在php.ini中定义的所有caching文件。 与会话文件位置相同。

我build议在wsdl url中使用cache-buster。

在我们的应用程序中,我们在wsdl url中使用了一个SVN修订版ID,所以客户端立即知道正在改变的结构。 这对我们的应用程序有效,因为每次我们改变服务器端,我们也需要相应地调整客户端。

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

这需要svn被正确configuration。 不在所有的存储库,这是默认启用。

如果你不对这两个组件(服务器,客户端)负责,或者你不使用SVN,你可能会发现另一个指标,可以在你的wsdl url中用作caching破坏者。

如果您已经部署了代码或者无法更改任何configuration,则可以从wsdl中删除所有临时文件:

 rm /tmp/wsdl-* 

只是为了文件的原因:

我现在(2014)观察到,从所有这些有价值和正确的方法,只有一个是成功的。 我已经在服务器上的WSDL中添加了一个函数,客户端并没有认识到这个新函数。

  • WSDL_CACHE_NONE添加到参数没有帮助。
  • 添加cache-buster没有帮助。
  • 设置soap.wsdl_cache_enabled到PHP ini帮助。

我现在不确定是三者的结合,还是一些function被严格执行,以至于它们可能会随机地保持无用,或者如果某些特征层次不被理解,

所以最后,希望你必须检查所有三个解决这样的问题。