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或者误解了它的作用的任何线索?
分块数据不会减少内存使用,您需要像直接使用数据库分页一样进行操作。
就像第一次按 id 或其他方式从 200 个 order 开始获取,在处理前 200 个之后,使用 where 子句再次触发该查询,询问接下来的 200 个结果。
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |