0

我已经编写了一个模块来导入产品,我目前正在使用 Magento 的产品模型来相应地添加/更新产品。但是,事实证明这非常慢(可能是因为我启用了目录索引?)。

即使只是做

$product = Mage::getModel('catalog/product')->load($id);
$product->save();

慢得令人难以置信-我们说每个产品可能需要 2 秒(我每个 http 请求要 5 秒,并使用 javascript 发出多个请求)。

每个产品都需要更新一些属性、更改类别 ID 以及更新库存水平。目前,我正在循环浏览 20 种产品,并且需要将近 60 秒的时间。在生产中,它将遍历 200-300 种产品(尽管在更强大的服务器上)。

是否有更好/更快的方式来创建/更新产品?显然我可以只使用 SQL,但我不想弄清楚 Magento 的强大 EAV 数据库结构!

抱歉,如果这是一个不恰当的问题,我不知道如何最好地表达它!

4

1 回答 1

1

在导入时将索引器模式设置为手动至少会给您带来一些性能提升。您显然可以在管理区域中进行设置,但您也可以通过脚本进行设置:

//Set to manual mode
$processCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach($processCollection as $process) {
    $process
        ->setMode(Mage_Index_Model_Process::MODE_MANUAL)
        ->save();
}

//Set back to real time mode
$processCollection = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach($processCollection as $process) {
    $process
        ->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)
        ->save();
}

如果您正在寻找一种在导入后直接在脚本中重新索引的方法...

$processCollection = Mage::getSingleton('index/indexer')->getProcessesCollection(); 
foreach($processCollection as $process) {
      $process
         ->reindexEverything();
}

但是,Magmi - http://sourceforge.net/projects/magmi/files/magmi-0.7/ - 不仅在导入产品方面速度惊人,而且还提供了一些非常好的功能。

我不知道任何其他用于 Magento 的产品导入工具也一样快(如果其他人知道同样快或更快的工具会感兴趣吗?)

于 2012-08-02T16:34:23.297 回答