Использование Magento API для получения продуктов

Я использую Magento API для получения данных о товарах из определенной категории из другого домена . Я сделал вызов 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 продуктами. Я хочу знать следующее:

  1. Правильный ли приведенный выше код и просто скрипт API Magento работает очень медленно?
  2. Не является ли приведенный выше код лучшим способом сделать то, что мне нужно?
  3. Может ли быть это какие-либо другие факторы, замедляющие этот процесс?

Любая помощь будет принята с благодарностью. По крайней мере, если я знаю, что использую код правильно, я могу искать другие возможности.

Заранее спасибо!

================= РЕДАКТИРОВАТЬ =================

Используя многократный выбор, предложенный Маттиасом Зейсом, данные приходит намного быстрее. Вот код, который я использовал:

$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:

Запрошенное изображение не существует в галерее изображений продуктов.

Кто-нибудь знает, почему это может сейчас происходить? Еще раз спасибо заранее.

13
задан Adam Moss 9 January 2012 в 23:23
поделиться