1

データベースに 40k のエントリがあり、laravel で単純なフェッチを使用してそれらを呼び出そうとしています。

$domains = Domain::where("available", 1)->limit(1000)->get();
return view('domains')
    ->with("domains", $domains);

これは、数千行までは問題なく機能します。しかし、通話に制限を設定しないと、500 エラーが発生します。理由を理解できず、この問題を回避する方法を見つけるためにどこを見ればよいかわかりません.Apacheログやストレージにあるlaravel自身のログには何も見つからないようです.

4

1 に答える 1

7

コマンドを活用することで、この問題を回避できます->chunk

Domain::where('available', 1)->chunk(200, function($domain){
    //do whatever you would normally be doing with the rows you receive
    // $domain stuff
});

このコマンドの目的は、モデルを反復するchunkたびにメモリを解放することです。Xこの例では、200 を示しています。

補足- チャンク メソッドはClosure2 番目の引数として a を使用するため、必ずuse($your_varaibles);

于 2016-06-17T22:23:35.703 に答える