我已经成功创建了一个客户端和服务器soap对象......但我认为在服务器端缓存存在真正的问题。我正在使用以下命令禁用客户端和服务器脚本上的所有缓存:
ini_set("soap.wsdl_cache", "0");
ini_set("soap.wsdl_cache_ttl", "0");
ini_set("soap.wsdl_cache_enabled", "0");
但无论我做什么,我似乎从服务器得到完全相同的响应。我已经更改了对象名称,更改了WSDL名称,甚至在对象名称后附加了一个时间戳,以确保每次调用都不一样。然后突然,大约10或20分钟左右它会更新,我会得到一个不同的回应。我已经检查了phpinfo()并且它说缓存ttl是一天(全局),所以我认为它肯定比那短。
有关杀死任何缓存的任何想法?
答案 0 :(得分:0)
您可以尝试将选项传递给SOAP对象:
$client = new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE));
$server = new SoapServer("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE));
如果这没有帮助,请尝试清除wsdl缓存文件。在linux上,它通常位于/ tmp文件夹中,它的名称以wsdl-
开头。如果清除此文件没有帮助,可能还会使用其他缓存吗?它只是SoapServer还是使用了一些额外的库?
答案 1 :(得分:0)
我有同样的问题,并尝试设置:
new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE))
什么都没做。
最后,我找到了用于缓存wsdl文件的服务器的/ tmp文件夹,并将其删除。固定!
/ tmp文件夹不在我的虚拟域/ tmp文件夹中,而是在服务器目录的根目录下。