У меня есть 40 тыс. Записей в базе данных, и я пытаюсь вызвать их, используя простой выбор в laravel.
$domains = Domain::where("available", 1)->limit(1000)->get();
return view('domains')
->with("domains", $domains);
Это прекрасно работает до нескольких тысяч строк. Но если я не установил лимит на вызов, я получаю 500 ошибок. Я не могу понять, почему, и я не могу понять, где я буду искать, как избежать этой проблемы, я не могу найти что-либо в журналах apache или в собственных журналах laravel, находящихся в хранилище.
Вы можете избежать этой проблемы, используя ->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.
Примечание — В качестве метода чанка используется Closure
как второй аргумент, убедитесь, что вы use($your_varaibles);
Других решений пока нет …