目前,Magento在处理大规模行动方面存在问题.它返回一些JS,它包含当前集合和过滤器的每个db id,无论分页如何.这是为了支持网格标题中的"全选"与"选择所有可见"选项.当你的记录数量较少时,这不是一个问题,但如果你有850k记录(在这种情况下为订单),这就成了一个严重的问题.
我的问题是,有没有人有这个问题的优雅解决方案?
我可以想到几个解决方案,每个解决方案都有其自身的缺点,但我希望有人能够以一种简单的方式解决这个问题,并将其作为一个附加模块.付费或开源解决方案都是受欢迎的建议.
澄清:
我正在寻找使用Magento中的网格小部件来解决850k +记录问题的优雅/插入式解决方案.股票Magento代码决定返回当前过滤器匹配的每条记录的id,即使它们没有显示.这不是关于记录的离线处理,而是关于将网格小部件用于日常管理任务.
一种可能的解决方案是将过滤搜索的结果存储在临时表中,并返回对搜索结果的引用.然后,您可以使用"全选"上的实际ID将其更改为使用引用对操作使用特定回调.这将保留当前的行为.
那么,再问一次,有没有人有一个很好的解决方案已经创建了?
小智 6
我在shell脚本中运行繁重的操作.我有一个通用迭代器(在我的情况下是产品,但可以用其他所有东西完成),我只实现了一个对产品执行操作的类.我的product_iterator shell脚本负责循环产品,同时一次只处理x个产品(以避免内存泄漏).
嗯,针对该问题的侵入性最小的解决方案是关闭具有大量记录的网格的“全选”选项。通过扩展网格类并添加以下代码,可以轻松实现此目的:
protected function _prepareMassaction()
{
$this->getMassactionBlock()->setUseSelectAll(false);
return parent::_prepareMassaction();
}
Run Code Online (Sandbox Code Playgroud)