5

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

关于杀死任何类型的缓存的任何想法?

4

2 回答 2

0

I had the same issue, and trying to set:

  new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE))

did nothing.

In the end, I located the /tmp folder the server used to cache the wsdl file and just delete it. Fixed!

The /tmp folder was not in my virtual domain /tmp folder, but at the root of the server directory.

于 2014-10-31T15:58:23.137 回答
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 还是使用了一些额外的库?

于 2012-12-11T23:28:31.150 回答