目前我正在努力研究如何加速在magento中保存产品。我们通过Magento API导入产品,每个产品需要很长时间才能更新。在catalog_product_save_ *事件上触发了大量的观察者。
你有什么提示观察者不重要的东西,我可以禁用它们或我可以用低插入禁用的东西。
Thansk提出任何建议。 哈罗
答案 0 :(得分:3)
只需为所有索引将索引模式设置为“手动” 所以magento在每次产品保存后都不会运行reindex 不要忘记将它们恢复正常并在产品导入完成后运行完全重新索引。
答案 1 :(得分:3)
产品保存后花费大部分时间的流程是索引器。
您可以像这样以编程方式将索引模式设置为manual
:
$indexers = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($indexers as $indexer) {
$indexer->setMode(Mage_Index_Model_Process::MODE_MANUAL)->save();
}
导入后将其设置为auto
:
$indexers = Mage::getSingleton('index/indexer')->getProcessesCollection();
foreach ($indexers as $indexer) {
$indexer->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->save();
}
另外,根据您导入的内容,您可能需要重新编制数据索引。
可能的索引列表:
- 产品属性
- 产品价格
- 目录网址重写
- 产品平面数据
- 类别平面数据
- 类别产品
- 目录搜索索引
- 标记聚合数据
- 库存状态
醇>
执行reindex:
$process = Mage::getModel('index/process')->load($id);
$process->reindexAll();
其中$id
是上面列表中的列表索引。