2017-01-20 114 views
0

我正在致力于prestashop模块的webservice,这需要很多时间。 webservice每次通话都会返回一个运输费用,所以如果我有4个运输商prestashop做8个电话(4个用于购物车,4个用于获得订单页上的购物费用)。 有没有解决方案来缩短这个时间?像使用静态var一样使用。 我试过缓存但没有效果,因为wsdl已经在我的服务器上了。肥皂呼叫需要很多时间

+0

是否设置为SOAP客户端对象_cache_wsdl_选项?您可以通过在文件中缓存响应来减少请求。您可以首先检查文件中的值,如果请求的值不在缓存文件中,请执行soap请求。您还可以通过soap ui查看需要花费多少时间。这是请求,因为auf格式不正确的xml或者它是另一边的服务器? – Marcel

+0

当我从'directory/name.wsdl'使用它时,为什么要使用cache_wsdl? 我没有尝试soap ui但我有调试分析器prestashop –

回答

2

您必须缓存Web服务结果,以提高性能:

 if (Cache::isStored('unique-id-for-your-module-and-request-result-' . Tools::jsonEncode($request_params))) 
     { 
      $shipment_options = Cache::retrieve('unique-id-for-your-module-and-request-result-' . Tools::jsonEncode($request_params)); 
     } 
     else 
     { 
      $shipment_options = $api_or_soap->getEstimateCost($request_params); 
      if ($shipment_options) 
       Cache::store('unique-id-for-your-module-and-request-result-' . Tools::jsonEncode($request_params), $shipment_options); 
     } 

好运