Magento:通过 cron 作业导入/更新大量产品?
Magento: Importing / updating LOTS of products via cron job?
我正在尝试从给定的 XML 文件(无 Magento 导入格式)将 10000 多个产品导入/更新到 Magento 1.9。这是当前的工作流程:
在 cron 作业中,我每晚凌晨 1 点下载 XML 文件。此文件包含 10000 多种产品。因此,我正在使用来自 PHP 的 XMLReader class 浏览 XML 文件。为了确定产品是否已经存在,我首先按 sku 加载产品,就像这样,然后我检查它是否已加载,像这样:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) {
// create the product
} else {
// update the product
}
当然这不是唯一的代码,但也许这是我的瓶颈?代码 运行ning 永远是我现在编写的方式。关于如何快速(可能在 3-4 小时内)导入 10000 多种产品有什么想法吗?
我无法使用 magmi 或导入工作流程,因为导入必须在 运行 晚上通过 cron 作业进行。
谢谢!
首先,关于数据库中的产品实体存储:所有内容都使用 EAV 模式存储,这意味着您可以向产品实体添加任意属性,它们被视为大致等同于产品上的另一列table。但是,它们实际上存储在一组 table 中,然后每当您请求产品模型时都必须将它们连接起来(因此您要连接几个大的 table,10000 多次) .
幸运的是,有一种解决方法,即平面 tables - 这些 tables 采用自定义属性并创建一个 table,其中包含所有产品属性(使用 "Use in Product Listing" 选项配置)。您的瓶颈可能是您没有使用此产品 flat table(在“目录”部分下的“系统配置”中启用它)。它应该在打开后自动重新构建平面 table ,否则您需要从索引管理中手动重新索引。
我正在尝试从给定的 XML 文件(无 Magento 导入格式)将 10000 多个产品导入/更新到 Magento 1.9。这是当前的工作流程:
在 cron 作业中,我每晚凌晨 1 点下载 XML 文件。此文件包含 10000 多种产品。因此,我正在使用来自 PHP 的 XMLReader class 浏览 XML 文件。为了确定产品是否已经存在,我首先按 sku 加载产品,就像这样,然后我检查它是否已加载,像这样:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if(!$product) {
// create the product
} else {
// update the product
}
当然这不是唯一的代码,但也许这是我的瓶颈?代码 运行ning 永远是我现在编写的方式。关于如何快速(可能在 3-4 小时内)导入 10000 多种产品有什么想法吗?
我无法使用 magmi 或导入工作流程,因为导入必须在 运行 晚上通过 cron 作业进行。
谢谢!
首先,关于数据库中的产品实体存储:所有内容都使用 EAV 模式存储,这意味着您可以向产品实体添加任意属性,它们被视为大致等同于产品上的另一列table。但是,它们实际上存储在一组 table 中,然后每当您请求产品模型时都必须将它们连接起来(因此您要连接几个大的 table,10000 多次) .
幸运的是,有一种解决方法,即平面 tables - 这些 tables 采用自定义属性并创建一个 table,其中包含所有产品属性(使用 "Use in Product Listing" 选项配置)。您的瓶颈可能是您没有使用此产品 flat table(在“目录”部分下的“系统配置”中启用它)。它应该在打开后自动重新构建平面 table ,否则您需要从索引管理中手动重新索引。