我知道如何在PHP中禁用WSDL缓存,但是如何强制重新缓存WSDL呢?
这是我尝试过的方法:我将缓存设置为禁用,然后新的方法按预期显示出来了。然后我激活了缓存,但由于某种原因,我的旧的不起作用的wsdl再次出现了。那么,我该如何强制使用新的WSDL覆盖旧的缓存呢?
我知道如何在PHP中禁用WSDL缓存,但是如何强制重新缓存WSDL呢?
这是我尝试过的方法:我将缓存设置为禁用,然后新的方法按预期显示出来了。然后我激活了缓存,但由于某种原因,我的旧的不起作用的wsdl再次出现了。那么,我该如何强制使用新的WSDL覆盖旧的缓存呢?
我猜当你禁用缓存时,它也会停止向缓存中写入。因此,当你重新启用缓存时,旧的缓存副本仍将存在且有效。你可以尝试(启用缓存后)
ini_set('soap.wsdl_cache_ttl', 1);
我将time-to-live设置为1秒,因为我认为如果你将其设为0,则会完全禁用缓存但不会删除条目。当您想要清除缓存副本时,您可能只需要将这行代码放入。
在我的php.ini中有一个条目看起来像这样:
soap.wsdl_cache_dir="/tmp"
我在 /tmp 目录下发现了一堆以 wsdl-[某个十六进制字符串] 命名的文件。
我可以使用以下命令清除缓存的 wsdl 文件:
rm /tmp/wsdl-*
从缓存中删除旧的WSDL。
我会尝试
$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然后回退