私は非常に大きな結果セットを処理するので、ジョブのメモリフットプリントを減らすにはchunk()
メソッドを使用しています。ただし、ジョブが長時間実行されないように、特定の数の合計結果を処理したいだけです。奇妙なチャンクを制限する
現在、私はこれをやっているが、それはエレガントな解決策のように見えるしていません:
$count = 0;
$max = 1000000;
$lists = Lists::whereReady(true);
$lists->chunk(1000, function (Collection $lists) use (&$count, $max) {
if ($count >= $max)
return;
foreach ($lists as $list) {
if ($count >= $max)
break;
$count++;
// ...do stuff
}
});
これを行うにはクリーンな方法はありますか?
@whoanこれは、 'chunk'が' limit'の仮名である 'take'を使う' forPage'を呼び出しているために動作しません。そのため、 'chunk'はあなたが' limit'に渡したものを上書きします。 – eComEvo
私はコレクションオブジェクトのtake関数を見たと思います。役に立たない入力のために申し訳ありません。 – Gokigooooks