Performance 更新一个性能良好的产品

Performance 更新一个性能良好的产品,performance,magento,Performance,Magento,我想知道为什么每个产品的更新都需要10秒! 即使不更新任何内容,也只需按“保存”按钮 我发现在产品上有一个观察者 名称为:applyAllRulesOnProduct 因此,即使你不改变价格,它也适用于你对该产品的所有促销! 不仅如此,它还更新了所有的报价! 后者需要2秒左右的时间,每次更新需要4次! 以下是查询: UPDATE `sales_flat_quote` AS `t1` INNER JOIN (SELECT `t2`.`quote_id` AS `entity_id` FROM `

我想知道为什么每个产品的更新都需要10秒! 即使不更新任何内容,也只需按“保存”按钮

我发现在产品上有一个观察者 名称为:applyAllRulesOnProduct

因此,即使你不改变价格,它也适用于你对该产品的所有促销! 不仅如此,它还更新了所有的报价! 后者需要2秒左右的时间,每次更新需要4次! 以下是查询:

UPDATE `sales_flat_quote` AS `t1`
 INNER JOIN (SELECT `t2`.`quote_id` AS `entity_id` FROM `sales_flat_quote_item`     AS `t2`
INNER JOIN `catalogrule_product_price` AS `t3`
 WHERE (t2.product_id = t3.product_id) GROUP BY `quote_id`) AS `t2` ON t1.entity_id     =     t2.entity_id
SET `t1`.`trigger_recollect` = 1"
我想知道为什么它会这样做,更新所有报价而不更新价格? 我称之为虫子。 Magento应该检查哪个字段已更新

顺便说一句,magento从不清空sales_flate_quote表,即使我配置了自动清理日志。 因此,一个“解决方案”是删除5天前完成的所有报价: 从sales_flat_quote中删除,其中更新日期为 这大大缩短了查询的持续时间。 0.3秒

现在,我想知道你们中的一些人是否找到了另一种解决方案。 我正在考虑删除观察者,并每天更新规则(促销)。 副作用是价格的更新不会立即反映在促销中

另一个解决方案是在后台运行。 我买了Magento Embedded ERP,它有一个后台任务的概念,我将检查是否可以在ERP任务的顶部插入此任务。因此,当我保存产品时,会在后台创建一个任务来运行“applyAllRulesOnProduct”

请注意,我的数据库中有30000个产品,我每天与供应商同步价格。 在每次更新10秒之前,幸运的是只有少数产品的价格每天都在变化,否则就需要10*30000/3600=超过2天:-)

感谢您对缩短产品更新时间的帮助


Rod

您可以通过以下方式禁用关联事件:

$product->setIsMassupdate(true);
$product->setExcludeUrlRewrite(true);

我相信您有非常旧的硬件或服务器加载了其他东西。因为我们没有这么大的产品来节省时间。我的配置:Bi Opteron AMD四核2350,8 GB RAM,HD 2 x 240 Go SSD Intel 520。Os:Mandriva 2010.2。你认为这是个坏服务器吗?:-)它是一个全SSD专用服务器。缓存已启用,并且var文件夹位于RAM中(会话、缓存等)!更新一个产品需要10秒,因为它必须更新报价,而且有很多报价。但是当你仅仅改变描述的时候,更新旧的引号是没有用的