【发布时间】:2012-01-09 16:37:17
【问题描述】:
我正在使用 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 个产品的站点。我想知道的是:
- 上面的代码是否正确,只是 Magento 的 API 脚本很慢?
- 上面的代码不是满足我需要的最佳方式吗?
- 是否还有其他因素导致进展如此缓慢?
任何帮助将不胜感激。至少如果我知道我正确使用了代码,我可以看看其他途径。
提前致谢!
================= 编辑 =================
使用 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 中遇到的错误是:
产品图片库中不存在请求的图片。
有人知道为什么现在会发生这种情况吗?再次提前感谢。
【问题讨论】:
-
Magento API 非常慢。请提供有关 Magento 中的数据量(SKU 数量、商店浏览量)和使用的硬件的一些信息...
-
@Adam Moss 您尝试了多重通话。您知道获取生成的 XML 的方法吗?我正在编写 PHP 之外的应用程序并需要原始 SOAP
-
@baash05 有点晚了,但是你可以从 PHP 运行一些 multiCall 命令并使用 wiki.wireshark.org/XML Wireshark 或类似的东西来观察输出
标签: api magento product soap-client