Я использую API Magento для получения данных о продукте для продуктов определенной категории из другого домена. Я сделал вызов API и т.д. Код, который я использую для получения данных о продукте, выглядит следующим образом:
$productList = $client->call($session, 'catalog_category.assignedProducts', 7);
foreach ($productList as $product){
$theProduct = array();
$theProduct['info'] = $client->call($session, 'catalog_product.info', $product['sku']);
$allProducts[] = $theProduct;
}
Код работает нормально, но он идет очень медленно. Когда я добавляю вызов изображения в цикл, загрузка страницы занимает около 50 секунд, а для сайта - всего 5 продуктов. Я хочу знать следующее:
- Правилен ли код выше, и только Magento API script работает очень медленно?
- Является ли код выше не лучшим способом делать то, что мне нужно?
- Могут ли быть какие-то другие факторы, делающие это настолько медленным?
Любая помощь будет высоко оценена. По крайней мере, если я знаю, что правильно использую код, я могу посмотреть другие возможности.
Спасибо заранее!
================= EDIT ========================
Используя multicall, предложенный Matthias Zeis, данные поступают гораздо быстрее. Вот код, который я использовал:
$apicalls = array();
$i = 0;
$productList = $client->call($session, 'catalog_category.assignedProducts', 7);
foreach ($productList as $product){
$apicalls[$i] = array('catalog_product.info', $product['product_id']);
$i++;
}
$list = $client->multiCall($session, $apicalls);
Теперь это работает намного быстрее, чем раньше! Следующий вопрос, который я нашел, заключается в том, что вызов catalog_product_attribute_media.list, похоже, не работает одинаково, хотя все продукты имеют установленные изображения.
Ошибка, которую я получаю в var_dump:
Запрошенное изображение не существует в галерее изображений продукта.
Кто-нибудь знает, почему это может произойти сейчас? Еще раз спасибо заранее.