2008-11-27 98 views
15

我知道如何在PHP中禁用WSDL-cache,但强制重新缓存WSDL又如何呢?在php中强制重新缓存WSDL

这就是我试过的:我将缓存设置为禁用状态运行我的代码,并且新方法显示为预期状态。然后我激活了缓存,但由于某种原因,我旧的非工作wsdl再次出现。所以:我如何强制我的新WSDL覆盖旧的缓存?

回答

33

我想你什么时候禁用缓存它也会停止写入缓存。因此,当您重新启用缓存时,旧的缓存副本仍然存在且有效。您可以尝试(启用高速缓存)

ini_set('soap.wsdl_cache_ttl', 1); 

我把时间生存在一秒钟,因为我觉得如果你把它零将完全禁用缓存,但不删除该条目。当你想杀死缓存的副本时,你可能只想放入该行。

+2

这是我见过的实际工作的唯一答案。谢谢。 – 2015-01-16 14:52:13

+0

你做了我的一天! – 2017-12-07 17:22:11

1

我想尝试

$limit = ini_get('soap.wsdl_cache_limit'); 
ini_set('soap.wsdl_cache_limit', 0); 
ini_set('soap.wsdl_cache_limit', $limit); 

或可能设置soap.wsdl_cache_ttl为0,回

3

从缓存中删除旧的WSDL。

+0

不是一个好的解决方案。我没有访问服务器....即使我做..有许多肥皂服务运行。将不可能找出哪个缓存文件对应于我现在工作的ws – 2013-12-04 13:57:12

12

在我的php.ini有看起来像这样的条目:

soap.wsdl_cache_dir="/tmp" 

/tmp中,我发现了一堆名为WSDL到[一些十六进制字符串]文件

我可以刷新使用此命令缓存wsdl文件:

rm /tmp/wsdl-*