Performance 在Magento中以编程方式创建/更新产品
我已经编写了一个导入产品的模块,目前正在使用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和更新库存水平。目
$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()。我将尝试关闭索引,然后导入,然后再打开-希望这将提高性能。我将尝试一下,非常感谢!我会报告是否有帮助:)