通过php_info()
WSDL缓存所在的位置(/tmp
),但我不一定知道删除以WSDL开头的所有文件是否安全。
是的,我应该能够从中删除所有内容/tmp
,但是我不知道如果删除所有WSDL文件,这还会影响什么。
Answers:
您可以安全地删除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网址中使用缓存无效化器。
在我们的应用程序中,我们在wsdl网址中使用SVN修订版ID,以便客户端立即知道结构的变化。这适用于我们的应用程序,因为每次更改服务器端时,我们还需要相应地调整客户端。
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
这要求svn正确配置。并非在所有存储库上都默认启用此功能。
如果您对这两个组件(服务器,客户端)都不负责,或者不使用SVN,则可以在wsdl网址中找到另一个可用作缓存无效化指示符的指示器。
仅出于文档原因:
我现在(2014年)观察到,在所有这些有价值且正确的方法中,只有一种是成功的。我已经在服务器上的WSDL中添加了一个功能,但是客户端无法识别新功能。
WSDL_CACHE_NONE
到参数没有帮助。soap.wsdl_cache_enabled
为PHP ini有所帮助。我现在不确定这是这三者的结合,还是不确定某些功能是否得到了很好的实现,因此它们可能会随机地无用,或者不确定某些功能的层次结构。
所以最后,期望您必须检查所有这三个问题才能解决此类问题。
编辑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