Laravel分块不会减少PHP内存使用量

tif*_*ang 5 php memory-management chunking laravel

所以我一直在Eloquent尝试laravel的分块,但我遇到了一个问题.请考虑以下代码(我的问题的更简化版本):

$data = DB::connection('mydb')->table('bigdata')
->chunk(200, function($data) {
  echo memory_get_usage();
  foreach($data as $d) {
    Model::create(
      array(
        'foo' => $d->bar,
        ...
        //etc
      ));
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我运行以下代码时,我的内存输出如下所示:

19039816
21490096
23898816
26267640
28670432
31038840
Run Code Online (Sandbox Code Playgroud)

所以没有跳进去php.ini改变memory_limit价值任何线索为什么它不起作用?根据文档:"如果你需要处理很多(数千)Eloquent记录,使用chunk命令将允许你不用吃掉你所有的RAM".

我试过unset($data)foreach函数,但它没有帮助.关于我如何利用chunk或者误解了它的作用的任何线索?

Roh*_*tri 1

分块数据不会减少内存使用,您需要像直接使用数据库分页一样进行操作。

就像第一次按 id 或其他方式从 200 个 order 开始获取,在处理前 200 个之后,使用 where 子句再次触发该查询,询问接下来的 200 个结果。