2017-01-20 55 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); 
     } 

好運