Performance 在Magento中以编程方式创建/更新产品

Performance 在Magento中以编程方式创建/更新产品,performance,magento,model,product,Performance,Magento,Model,Product,我已经编写了一个导入产品的模块,目前正在使用Magento的产品模型来相应地添加/更新产品。然而,这被证明是非常缓慢的(可能是因为我启用了目录索引?) 即使只是做 $product = Mage::getModel('catalog/product')->load($id); $product->save(); 速度非常慢-我们说的是每个产品可能需要2秒(每个http请求我需要5秒,并使用javascript发出几个请求) 每个产品都需要更新某些属性、更改类别ID和更新库存水平。目

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

即使只是做

$product = Mage::getModel('catalog/product')->load($id);
$product->save();
速度非常慢-我们说的是每个产品可能需要2秒(每个http请求我需要5秒,并使用javascript发出几个请求)

每个产品都需要更新某些属性、更改类别ID和更新库存水平。目前,我正在循环浏览20种产品,大约需要60秒。在生产中,它将在200-300个产品之间循环(尽管在功能更强大的服务器上)

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


很抱歉,如果这是一个naff问题,我不知道如何最好地表达它

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

//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——不仅在导入产品方面速度惊人,而且还提供了一些非常好的功能


我不知道还有其他针对Magento的产品导入工具速度如此之快(如果有人知道其他工具速度如此之快或更快,我会感兴趣吗?

您尝试过MAGMI吗?这是导入/更新产品的最佳工具老实说,我甚至没听说过,但我很可能会尝试一下!同样的导入过程将(最初是这样,但现在已经取消)连接到Microsoft Dynamics MSSQL数据库,并在cron作业上从其数据库导入产品,因此花10分钟导入200个产品不是可行的选择!我会调查的,谢谢:)你能发布更多的代码吗?我也做了同样的事情,我的导入过程并不慢。不需要更多的代码,除了加载和保存产品,我已经注释掉了所有内容,仍然需要同样长的时间!唯一的其他工作是设置属性(例如使用$product->setDescription()。我将尝试关闭索引,然后导入,然后再打开-希望这将提高性能。我将尝试一下,非常感谢!我会报告是否有帮助:)