Magento批量操作和大量记录问题的解决方案?

Magento批量操作和大量记录问题的解决方案?,magento,Magento,目前,Magento在处理大规模动作方面存在问题。它返回一位JS,其中包含当前集合和筛选器的每个db id,而不考虑分页。这是为了支持网格标题中的“全选”与“全选可见”选项。当您的记录数量较少时,这并不是一个问题,但是如果您有850k条记录(在本例中为订单),这将成为一个严重的问题 我的问题是,有没有人对这个问题有一个优雅的解决方案 我可以想出几种解决方案,每种都有自己的缺点,但我希望有人能以一种简单的方式解决这个问题,作为一个附加模块。付费或开源解决方案都是受欢迎的建议 澄清: 我正在寻找一个

目前,Magento在处理大规模动作方面存在问题。它返回一位JS,其中包含当前集合和筛选器的每个db id,而不考虑分页。这是为了支持网格标题中的“全选”与“全选可见”选项。当您的记录数量较少时,这并不是一个问题,但是如果您有850k条记录(在本例中为订单),这将成为一个严重的问题

我的问题是,有没有人对这个问题有一个优雅的解决方案

我可以想出几种解决方案,每种都有自己的缺点,但我希望有人能以一种简单的方式解决这个问题,作为一个附加模块。付费或开源解决方案都是受欢迎的建议

澄清:

我正在寻找一个优雅的解决方案,使用Magento中的grid小部件解决850k+记录的问题。stock Magento代码会做出一个愚蠢的决定,即返回当前筛选器匹配的每个记录的id,即使这些记录没有显示。这不是关于记录的脱机处理,而是关于使用网格小部件执行日常管理任务

一种可能的解决方案是将过滤搜索的结果存储在临时表中,并返回对搜索结果的引用。然后,您可以将其从使用“全选”上的实际ID更改为使用引用对操作使用特定回调。这将保留当前的行为


那么,再问一次,有没有人对这个已经创建的问题有一个好的解决方案呢?

我正在一个shell脚本中运行大量的操作。我有一个泛型迭代器(在我的例子中是产品,但是可以用其他任何东西来完成),我只实现一个对产品执行操作的类。我的product_iterator shell脚本负责在产品上循环,同时一次只处理x个产品(以避免内存泄漏)。

我认为fbmc有正确的通用方法。显然,即使您找到了一种方法将所有850k记录发回,框架也会因为试图处理这些记录而心脏病发作。如果需要,请在shell脚本中运行逻辑。对于某些作业,您甚至可能需要成批运行它们,或者向下移动到实际的SQL逻辑

不幸的是,框架的某些部分无法处理这种规模。你找到了其中一个

希望有帮助

谢谢,
Joe

好吧,这个问题的最小侵入性解决方案是对具有大量记录的网格关闭“全选”选项。这可以通过扩展grid类并添加以下代码轻松实现:

protected function _prepareMassaction()
{
    $this->getMassactionBlock()->setUseSelectAll(false);
    return parent::_prepareMassaction();
}

最近我写了一篇关于“在Magento中向管理网格添加新的批量操作”的文章,
希望您会喜欢它:

它描述了添加质量作用的两种方法
1> 扩展网格布局\u prepareMassaction()方法
2> 使用事件:core\u block\u abstract\u prepare\u layout\u before(更多升级证明方式)

谢谢
如果你最终不得不使用自己的本地存储,那么巧妙地使用本地存储将是解决这一问题的绝佳方法。我认为@fbmc没有抓住要点。你不是在寻找一种方法来摆脱这个多余的JS块,而不是从web界面处理所有850k的记录吗?不管是哪种情况,我都建议修改你的问题,因为它不清楚。你应该在这里发布你博客文章的内容,而不是你博客的链接。谢谢李。我知道这是一个古老的回答,但你没有抓住问题的关键。我不是在问如何使用大规模行动来处理850k的记录。我要指出的是,如果在具有大量记录的网格上,大量操作处于活动状态,则Magento将返回集合中每个记录的ID。这当然是个问题。