そのため、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
));
}
}
したがって、次のコードを実行すると、メモリ出力は次のようになります。
19039816
21490096
23898816
26267640
28670432
31038840
それでは、値に飛び込んphp.ini
で変更せずに、memory_limit
なぜそれが機能しないのか手がかりはありませんか? ドキュメントによると、「大量の (数千の) Eloquent レコードを処理する必要がある場合、chunk コマンドを使用すると、RAM をすべて消費することなく処理できます」。
foreach 関数の後に試しunset($data)
ましたが、役に立ちませんでした。私がそれをどのように利用できるか、chunk
またはそれが何を誤解したかについての手がかりはありますか?