代码之家  ›  专栏  ›  技术社区  ›  Foued MOUSSI

Laravel分块结果实用程序

  •  0
  • Foued MOUSSI  · 技术社区  · 5 年前

    根据Laravel文档

    如果你需要与 数千 关于数据库记录,请考虑 使用块方法。这种方法 检索一小部分 一次结果 并将每个块馈送到闭包中 处理。此方法对于编写Artisan命令非常有用 这个过程有数千条记录。例如,让我们使用 整个用户表一次分为100条记录:

    DB::table('users')->orderBy('id')->chunk(100, function ($users) {
        foreach ($users as $user) {
            //
        }
    });
    

    它是否应该减少等待时间?

    我看不出这个功能有什么帮助

    1 回复  |  直到 5 年前
        1
  •  2
  •   James Clark    5 年前

    分块允许您将大型查询和后续处理任务分解为重复的步骤。

    这种技术最常见的应用是避免达到内存限制。如果你从数据库中加载数十万行,然后对它们进行转换,这可能会占用大量内存,并且很容易达到php.ini中定义的限制。

    根据上下文,您可以在每个块完成后立即将结果推送到屏幕上,这意味着您减少了初始结果的等待时间,而整体处理时间可能会增加,而结果通知一次会以一个块的形式出现。