有人知道为什么 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;
}