【问题标题】:Problems with PHP Soap Server caching responsePHP Soap 服务器缓存响应的问题
【发布时间】:2012-11-27 09:26:27
【问题描述】:

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

关于终止任何类型的缓存有什么想法吗?

【问题讨论】:

    标签: php caching soap


    【解决方案1】:

    您可以尝试将选项传递给 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 还是使用了一些额外的库?

    【讨论】:

    • 谢谢 $server = new SoapServer("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE));为我工作
    【解决方案2】:

    我遇到了同样的问题,正在尝试设置:

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

    什么也没做。

    最后,我找到了服务器用来缓存 wsdl 文件的 /tmp 文件夹,然后将其删除。已修复!

    /tmp 文件夹不在我的虚拟域 /tmp 文件夹中,而是在服务器目录的根目录中。

    【讨论】:

      猜你喜欢
      • 2014-01-13
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2012-04-19
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多