首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento增加应用目录规则的不良性能

Magento增加应用目录规则的不良性能
EN

Stack Overflow用户
提问于 2013-06-28 21:45:06
回答 1查看 2.7K关注 0票数 2

我的magento商店遇到了问题。

我们目前为所有客户设置了+- 700目录规则。在包含2800个产品(可配置且简单)和80个属性的目录上。

Magento版本: 1.7.0.2编译:关闭类别/产品:扁平化缓存:所有已启用索引:全部已启用

通过magento GUI应用700个折扣规则需要花费大量时间(>30分钟),并且没有得到任何反馈。之后,不会应用任何规则。我尝试了在这里找到的shell脚本:http://browse.feedreader.com/c/Drew_Gillson/232210211。通过这种方式,当应用规则时,我会得到很多反馈,以及将规则应用于产品所需的时间。我看到的是,每个产品大约需要2秒来应用所有规则。这意味着应用所有规则将花费2s * 2800 = 4200s / 60 / 60 = 1:10小时,这当然是一个不可接受的性能问题。随着CPU和RAM使用率达到顶峰。它所在的服务器是一个具有4 4GB (3.5 4GB可用)和4个专用CPU核心的VPS。(至强2.4 xeon)

当我将目录规则的数量减少到+- 25时,性能是可以接受的(几分钟)。但对于我们的情况,我们希望使用许多目录规则,因为不同的客户有不同的定价协议。

使用Magento Catalog规则可以做到这一点吗?或者,是否有另一种方法可以基于编目规则在数据库中高效地生成“catalogrule_product_price”行。

谢谢,

Wouter

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 19:09:35

我可以推荐两种通用的方法:

1)考虑去掉价格指数,动态计算价格。这显然较慢,但如果您正确使用缓存,可能会变得很好。

要做到这一点,最好的方法是创建一个自定义产品类型,并通过扩展Mage_Catalog_Model_Product_Type_Price实现您自己的价格逻辑。创建自定义产品类型不会破坏Magento的核心功能。

您还需要对Mage_Catalog_Model_Product::getFinalPrice()执行一些操作,因为在类别视图中,价格是从索引中获取的。

注意:如果你想按价格排序或按价格过滤,你会遇到麻烦。这些函数在数据库上运行。你需要解决这个问题。

2)考虑实现部分规则应用功能。价格指数表(catalog_product_index_price)取决于产品、客户组、网站和税收设置。当其中一个发生变化时,您可以触发以更新所需的行。

这两条路都相当复杂,开发密集,但恐怕没有其他解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17366138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档