2

有人知道为什么 api 调用需要这么多时间来创建 1 个产品吗?

对于一个客户来说,一个产品需要 1-3 秒,对于另一个客户来说,相同的代码需要 30 秒到 1 分钟。

我从 Alan Storm http://alanstorm.com/magento_soap_api_shell_scripts的文章“Scrubbing Bubbles for Magento's SOAP”中得到它

因此,您可以跳过 SOAP 或 XML-RPC 层并在核心中使用直接调用。

更新(1):我看到索引是很久以前(几周)建立的,之后它的速度要快得多。但不要太快。每个产品 6 秒,3 秒仅用于产品的创建。在另外 3 秒内更新股票 api 并添加媒体 api。

更新(2):索引正在重建(在程序中也自动)但今天每个产品需要 40 秒(这怎么可能,网店不慢)

UPDATE(3):这个是缓存问题,每次清空缓存(storage cache),3-6秒再刷一次(只是第一次没问题,一大堆产品,以后每晚都会出几个新的产品)。

更新(4):是的,Magmi 的速度非常快,每小时 18.000 个产品,并且创建了所有图像和额外图像(包括自己的 ERP 扩展记录)。但是插件gallery_images的目录问题,花了最多时间让它工作,我的程序是从根+子目录运行的,而Magmi将根+子目录作为“根”,所以我不得不改变Magmi,以确定是否有创建产品也不例外,因为我必须在之后做自己的事情(为 ERP 扩展创建记录)。

UPDATE(5):Magento API(创建产品)和 Magmi 有什么区别?Magmi 在数据库中创建直接记录,但如果扩展做额外的事情核心扩展可能被 Magento API(创建产品)覆盖,我认为你必须自己做的事情,因此我找到 Magento API(创造产品)更安全使用,或不使用?(第一次慢,正常后,​​但在任何版本中都是安全的)

问题:我创建这个是因为我在论坛上看到,Magmi 和 Martinez 速度很快,但他们都有问题,你不能做所有事情。所以我只使用 Magmi 来更新产品,速度非常快(Martinez 也是)。但这是真的吗,还是您通常也可以使用 Magmi 或 Martinez 轻松创建产品?(我的程序对我来说总是第二种可能性)。但我现在去试试这个(Magmi),因为这一切都太慢了。

回答:是的,现在使用 Magmi 似乎可以轻松创建产品 .. 我还不知道因为其他扩展而错过了什么 ..

代码:

  $model = Mage::getModel('catalog/product_api');

  $type = 'simple';
  $product_attribute_set_id = '9';
  $sku = ($products_array[$p][0]);
  $data = array('short_description' => $products_array[$p][3],
                'name' => $products_array[$p][1],
                'weight' => ((float)str_replace(",", ".", $products_array[$p][16])),
                'price' => ((float)str_replace(",", ".", $products_array[$p][7])) * $profit,
                'cost' => ((float)str_replace(",", ".", $products_array[$p][8])),
                'description' => $products_array[$p][2],
                'tax_class_id' => $tax_class_id,
                'status' => '1',
                'eancode' => $products_array[$p][4],
                'afas_sku' => $products_array[$p][0],
                'leverancier' => $supplier,
                'inhoud_verpakking' => $products_array[$p][0],
                'size' => $products_array[$p][13],
                'material' => $products_array[$p][15],
                'kleur' => $color,
                'manufacturer' => $manufacturer,
                'delivery' => $delivery,
                'pptitleadditional' => $products_array[$p][24],
                'meta_title' => $products_array[$p][1] . " | " . $products_array[$p][23] . " | xxxxx.nl",
                'meta_description' => "xxx.",
                'categories' => array('0' => $cat_new_prod1[(string)( $products_array[$p][0])],
                                      '1' => $cat_new_prod2[(string)( $products_array[$p][0])],
                                      '2' => $cat_new_prod3[(string)( $products_array[$p][0])],
                                      '3' => $cat_new_prod4[(string)( $products_array[$p][0])],
                                      '4' => $cat_new_prod5[(string)( $products_array[$p][0])]
                                     )
               );
  try {
    $new_product_id = $model->create($type,$product_attribute_set_id,$sku,$data);
  } catch (Exception $e) { // sku already used
    userErrorHandler(E_USER_WARNING, $e->getMessage(), $e->getFile(), $e->getLine(), "");
    continue;
  }
4

1 回答 1

2

查看 Magmi wiki “ Project origins ” 条目,您就会明白为什么要花费这么多时间。

Magmi Datapump API非常适合调整您的脚本,几乎不需要修改

于 2013-03-04T11:17:11.227 回答