通过保存WSDL缓存的php_info()
(/tmp
),但我不一定知道删除所有以WSDL开头的文件是否安全。
是的,我应该能够删除/tmp
中的所有内容,但我不知道如果删除任何所有WSDL文件,这会产生什么影响。
答案 0 :(得分:179)
您可以安全地删除WSDL缓存文件。如果您希望阻止将来的缓存,请使用:
ini_set("soap.wsdl_cache_enabled", 0);
或动态:
$client = new SoapClient('http://somewhere.com/?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
答案 1 :(得分:21)
删除服务器上/ tmp文件夹中的所有wsdl *文件。
WSDL文件缓存在php.ini中定义的所有缓存文件的默认位置。与会话文件位置相同。
答案 2 :(得分:12)
我建议在wsdl url中使用cache-buster。
在我们的应用程序中,我们在wsdl url中使用SVN Revision id,以便客户端立即知道更改结构。这适用于我们的应用程序,因为每次我们更改服务器端时,我们还需要相应地调整客户端。
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
这需要正确配置svn。并非所有存储库都默认启用。
如果您不对两个组件(服务器,客户端)负责,或者您不使用SVN,您可能会发现另一个指标可用作wsdl网址中的缓存破坏程序。
答案 3 :(得分:8)
如果您已部署代码或无法更改任何配置,则可以从wsdl中删除所有临时文件:
rm /tmp/wsdl-*
答案 4 :(得分:4)
仅出于文档的原因:
我现在(2014年)观察到,从所有这些有价值和正确的方法中,只有一个是成功的。我在服务器上为WSDL添加了一个函数,客户端没有识别新函数。
WSDL_CACHE_NONE
没有帮助。soap.wsdl_cache_enabled
设置为PHP ini帮助。我现在不确定它是否是三者的组合,或者是否某些功能被严格实施,因此它们可能随机无用,或者如果某些功能层次结构未被理解。
最后,期望你必须检查这三个问题来解决这些问题。
答案 5 :(得分:0)
编辑您的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