Laravel не может получить более 15 тысяч записей - PullRequest
2 голосов
/ 12 апреля 2019

У меня очень простой запрос для получения записей из базы данных:

\DB::table("table")->get();

Когда я пытаюсь получить более ± 145000 записей из базы данных, я получаю: 500 server error.

Код вроде:

\DB::table("table")->take(14500)->get();

хотя работает.Когда я пытаюсь получить больше 15 Кб, я сразу получаю сообщение об ошибке без какой-либо загрузки или дополнительной информации.Я не могу получить больше информации из журналов.Странно то, что когда я пишу этот код, чтобы повозиться - я могу получить все записи.(с красноречивыми работами тоже самое)

1 Ответ

4 голосов
/ 12 апреля 2019

Если вы проверите свой журнал ошибок, вы, скорее всего, увидите что-то вроде:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)

Было бы лучше порция ваших результатов, а не загружать все сразу в память

\DB::table("table")->chunk(500, function($results) {
    foreach($results as $result) {
       do your thing
    }    
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...