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 的使用达到顶峰。托管的服务器是具有 4GB RAM(3.5GB 免费)和 4 个专用 CPU 内核的 VPS。(至强 2.4GHZ)

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

Magento 目录规则可以做到这一点吗?或者是否有另一种方法可以根据目录规则在数据库中有效地生成“catalogrule_product_price”行。

谢谢,

沃特

4

1 回答 1

1

我可以建议两种一般方法:

1) 考虑降低价格指数并即时计算价格。这显然更慢,但如果你正确使用缓存,它可能会变得没问题。

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

您还需要对 Mage_Catalog_Model_Product::getFinalPrice() 做一些事情,因为在类别视图中,价格取自索引。

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

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

两条路线都非常复杂且开发密集,但恐怕没有其他解决方案。

于 2013-09-24T11:09:35.277 回答