PHP Soap Server缓存响应的问题

时间:2012-12-09 23:22:05

标签: php caching soap

我已经成功创建了一个客户端和服务器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是一天(全局),所以我认为它肯定比那短。​​

有关杀死任何缓存的任何想法?

2 个答案:

答案 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文件夹中,而是在服务器目录的根目录下。