我的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
发布于 2013-09-24 19:09:35
我可以推荐两种通用的方法:
1)考虑去掉价格指数,动态计算价格。这显然较慢,但如果您正确使用缓存,可能会变得很好。
要做到这一点,最好的方法是创建一个自定义产品类型,并通过扩展Mage_Catalog_Model_Product_Type_Price实现您自己的价格逻辑。创建自定义产品类型不会破坏Magento的核心功能。
您还需要对Mage_Catalog_Model_Product::getFinalPrice()执行一些操作,因为在类别视图中,价格是从索引中获取的。
注意:如果你想按价格排序或按价格过滤,你会遇到麻烦。这些函数在数据库上运行。你需要解决这个问题。
2)考虑实现部分规则应用功能。价格指数表(catalog_product_index_price)取决于产品、客户组、网站和税收设置。当其中一个发生变化时,您可以触发以更新所需的行。
这两条路都相当复杂,开发密集,但恐怕没有其他解决方案。
https://stackoverflow.com/questions/17366138
复制相似问题