在PHP中如何清除WSDL缓存?


88

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

是的,我应该能够从中删除所有内容/tmp,但是我不知道如果删除所有WSDL文件,这还会影响什么。

Answers:


196

您可以安全地删除WSDL缓存文件。如果希望防止以后进行缓存,请使用:

ini_set("soap.wsdl_cache_enabled", 0);

或动态地:

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

31
我相信,当使用SoapClient时,建议不要使用已定义的常量WSDL_CACHE_NONE,而不是硬编码0。参见php.net/manual/en/soapclient.soapclient.php
Dan Burton 2010年

无论如何,我可以让它保持缓存功能,但是有些如何暂时使所有缓存无效?我们可以在.NET等容易做这些事情
卡姆兰沙希德

该解决方案确实清除了缓存,但是这也是性能的折衷。
Nabeel Arshad

5
对于实际清除缓存,即使在/ tmp文件被拆除我仍然是越来越WSDL高速缓存的问题,直到我用这个设置ini_set('soap.wsdl_cache_ttl', 1);,让它坐了一个小时-在这里找到:stackoverflow.com/questions/323561/...
约书亚弗里克

26

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

WSDL文件被缓存在php.ini中定义的所有缓存文件的默认位置。与会话文件相同的位置。


您能告诉我这个tmp文件夹在哪里吗?
卡姆兰·沙希德

2
在/ tmp。可以将php设置为使用其他位置,您可以通过执行php -i |查找它。grep wsdl_cache_dir
Siliconrockstar 2015年

这是给我的。注意:我使用的是docker-compose,因此必须在执行新的docker-compose up之前运行docker-compose rm <container>
conradkleinespel

您可以使用“ php -i | grep soap.wsdl_cache_dir”找到wsdl缓存的文件夹
Daniel K. Mueller

13

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

rm /tmp/wsdl-*

2
这也是我的工作,当然,如果您使用的是WSDL_CACHE_DISK
carlosvini 2015年

在Windows上,默认值为c:\ tmp
b3wii

12

我建议在wsdl网址中使用缓存无效化器。

在我们的应用程序中,我们在wsdl网址中使用SVN修订版ID,以便客户端立即知道结构的变化。这适用于我们的应用程序,因为每次更改服务器端时,我们还需要相应地调整客户端。

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

这要求svn正确配置。并非在所有存储库上都默认启用此功能。

如果您对这两个组件(服务器,客户端)都不负责,或者不使用SVN,则可以在wsdl网址中找到另一个可用作缓存无效化指示符的指示器。


7
如果存在另一个参数,则某些SOAP服务器将无法提供WSDL。
拉斐尔·瑞尔2014年

4

仅出于文档原因:

我现在(2014年)观察到,在所有这些有价值且正确的方法中,只有一种是成功的。我已经在服务器上的WSDL中添加了一个功能,但是客户端无法识别新功能。

  • 添加WSDL_CACHE_NONE到参数没有帮助。
  • 添加缓存无效器并没有帮助。
  • 设置soap.wsdl_cache_enabled为PHP ini有所帮助。

我现在不确定这是这三者的结合,还是不确定某些功能是否得到了很好的实现,因此它们可能会随机地无用,或者不确定某些功能的层次结构。

所以最后,期望您必须检查所有这三个问题才能解决此类问题。


仅供参考ini_set(“ soap.wsdl_cache_enabled”,WSDL_CACHE_NONE); 对我来说很好
霍贝利2015年

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.