所以我一直在尝试 Laravel 在 Eloquent 中的分块,但我遇到了一个问题。考虑以下代码(我的问题的更简化版本):
$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
));
}
}
因此,当我运行以下代码时,我的内存输出如下所示:
19039816
21490096
23898816
26267640
28670432
31038840
因此,如果不跳入php.ini
并更改memory_limit
值任何线索为什么它不起作用?根据文档:“如果您需要处理大量(数千)条 Eloquent 记录,使用 chunk 命令可以让您在不吃掉所有 RAM 的情况下做到这一点”。
我在 foreach 函数之后尝试过unset($data)
,但没有帮助。关于我如何使用chunk
或我误解了它的作用的任何线索?