在Magento-1.9 SOAP中,有没有一种快速的方法来仅获取catalog_product.info的价格字段作为产品列表?

时间:2019-01-27 04:18:02

标签: php soap magento-1.9

我正在使用catalog_product.list获得产品列表。只需不到一秒钟的时间,即可获得约700种产品。然后,我使用catalog_product.info遍历每个产品,以获取诸如价格之类的值。但是这需要很长时间〜180秒。有更好的方法吗?

我将产品输出为csv,xml和json,仅包含字段“ sku”,“名称”,“价格”和“ short_description”。我从catalog_product.list获得了sku和名称。我找不到任何检索价格和short_description的方法,因此我遍历产品以使用catalog_product.info获取信息(1个产品的catalog_product.info大约需要2秒钟。) 这是api网站https://devdocs.magento.com/guides/m1x/api/soap/catalog/catalogProduct/catalog_product.list.html

$products  = $client->call($sessionId, "catalog_product.list");
echo "<pre>";
print_r($products);

$cleanProducts=[];
// foreach($products as $product){
for($i=0; $i<5; $i++){
        $product=$products[$i];
        $catalogProductReturnEntity = $client->call($sessionId, 'catalog_product.info', $product['product_id']  );

        $cleanProduct = [];
        $cleanProduct['sku']=$product['sku'];
        $cleanProduct['name']=$product['name'];
        // $cleanProduct['price'] = $catalogProductReturnEntity['price'];
        // $cleanProduct['short_description'] = $catalogProductReturnEntity['short_description'];

        $fields  = [ 'price', 'short_description'];
        foreach($fields as $field){
            if(isset($catalogProductReturnEntity[$field])!=null){
                $cleanProduct[$field] = $catalogProductReturnEntity[$field];
            }
        }
        $cleanProducts[] = $cleanProduct;
}

echo "<pre>";
print_r($cleanProducts);

API花费这么长时间是没有意义的。有没有人找到最快的方法?我没有使用Module:Mage_Catalog,因为这只是评估测试。而且我只能使用Magento-1.9和SOAPv1。让我知道是否有返回的内容在列表中提供更多信息。

第一个数组来自catalog_product.list中的Info 第二个数组来自catalog_product.info中的Info 第三个数组是从代码生成的。

我的问题是:Magento SOAP上是否有快捷方式来获取第3个数组而无需经过第1步和第2步?

Info from catalog_product.list Info from catalog_product.info Desired info

0 个答案:

没有答案