Я работаю над webservice, посвященным модулю prestashop, который занимает много времени. Webservice возвращает стоимость доставки при каждом звонке, поэтому, если у меня есть 4 транспондера preashop, выполните 8 звонков (4 для блоковой корзины и 4 для получения стоимости доставки на странице заказа). Есть ли решение сократить это время? как использование с использованием статического var. Я пробовал кеш, но никакого эффекта, потому что wsdl уже на моем сервере.Мыльный звонок занимает много времени
0
A
ответ
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);
}
удачи
Вы установите опцию _cache_wsdl_ для объекта мыло клиента? вы можете уменьшить количество запросов, кэшируя ответы в файле. вы можете сначала проверить значения в файле, и если запрашиваемое значение не находится в файле кеша, выполните запрос на мыло. Вы также можете проверить через мыло ui, что занимает так много времени. Это запрос, потому что auf плохо отформатирован xml или это сервер с другой стороны? – Marcel
Почему я должен использовать cache_wsdl, когда я использую его из 'directory/name.wsdl'? Я не пробовал soap ui, но у меня есть отладочный профайлер для prestashop –