Laravel 大数据批量处理方法(使用 chunk 方法分批处理)

Laravel

假如我们需要批量操作 Topic 数据模型的数据,下面是一个很糟糕的例子:

// 读取 200w 条数据 ~~ No XXX
$topics = Topic::all();
foreach ($topics as $topic) {
    $topic->collectImages();
}

一次性同时读取,直接会把内存填满。Laravel 下合理的方式应该是:

Topic::chunk(200, function ($topics) {
    foreach ($topics as $topic) {
        $topic->collectImages();
    }
});

以上每次从数据库分批次读取 200 表数据。

评论数量: 0

5
点赞
1636
浏览
0
评论

贡献 538
Summer
Building Products Users Love