我已经编写了一个导入产品的模块,我目前正在使用Magento的产品模型来相应地添加/更新产品。但是,事实证明这很慢(可能是因为我启用了目录索引?)。
即使只做
$product = Mage::getModel('catalog/product')->load($id);
$product->save();
非常慢 - 我们说每个产品可能需要2秒钟(我每个http请求需要5个,并且使用javascript来发出多个请求)。
每个产品都需要更新一些属性,更改类别ID,并更新库存水平。目前,我正在循环使用20种产品,并且耗时近60秒。在生产中,它将循环使用200-300种产品(尽管在功能更强大的服务器上)。
是否有更好/更快的方式来创建/更新产品?显然我可以使用SQL,但我并不想要搞清楚Magento强大的EAV数据库结构!
很抱歉,如果这是个问题,我不确定如何最好地说出来!
答案 0 :(得分: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的任何其他产品导入工具是否同样快(如果其他人知道一个快速或更快的产品会感兴趣吗?)