Magento:通过cron作业导入/更新产品的LOTS


Magento: Importing / updating LOTS of products via cron job?

我正试图从给定的XML文件将10000多个产品导入/更新到Magento 1.9中(没有Magento导入格式)。这是当前的工作流程:

在cron工作中,我每天晚上1点下载一个XML文件。这个文件包括10000多个产品。因此,我将使用PHP中的XMLReader类来浏览XML文件。为了弄清楚产品是否已经存在,我首先通过sku加载产品,就像这样,然后我检查它是否已加载,就像这样:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) { 
    // create the product
} else {
    // update the product
}

当然,这不是唯一的代码,但可能是我的瓶颈?代码永远以我现在编写的方式运行。关于如何快速(可能在3-4小时内)进口10000多种产品,有什么想法吗?

我不能使用magmi或导入工作流,因为导入必须在晚上通过cron作业运行。

谢谢!

首先,关于数据库中的产品实体存储:所有内容都使用EAV模式存储,这意味着您可以向产品实体添加任意属性,它们被视为大致等同于产品表上的另一列。然而,它们实际上存储在一组表中,每当您请求产品模型时,这些表都必须连接起来(因此,您要连接多个大表,10000多次)。

幸运的是,有一种方法可以通过平面表的形式来解决这个问题——这些表采用自定义属性,并创建一个包含所有产品属性的表(使用"在产品列表中使用"选项进行配置)。您的瓶颈可能是没有使用此产品平面表(请在"目录"部分的"系统配置"中启用它)。它应该在打开后自动重新构建平面表,否则您需要从索引管理手动重新索引。