2017-01-20 12 views
0

Я работаю над webservice, посвященным модулю prestashop, который занимает много времени. Webservice возвращает стоимость доставки при каждом звонке, поэтому, если у меня есть 4 транспондера preashop, выполните 8 звонков (4 для блоковой корзины и 4 для получения стоимости доставки на странице заказа). Есть ли решение сократить это время? как использование с использованием статического var. Я пробовал кеш, но никакого эффекта, потому что wsdl уже на моем сервере.Мыльный звонок занимает много времени

+0

Вы установите опцию _cache_wsdl_ для объекта мыло клиента? вы можете уменьшить количество запросов, кэшируя ответы в файле. вы можете сначала проверить значения в файле, и если запрашиваемое значение не находится в файле кеша, выполните запрос на мыло. Вы также можете проверить через мыло ui, что занимает так много времени. Это запрос, потому что auf плохо отформатирован xml или это сервер с другой стороны? – Marcel

+0

Почему я должен использовать cache_wsdl, когда я использую его из 'directory/name.wsdl'? Я не пробовал soap ui, но у меня есть отладочный профайлер для prestashop –

ответ

2

Вы должны кэшировать WebServices результатов для повышения производительности:

 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); 
     } 

удачи