Лучший способ обрабатывать большие базы данных с помощью Laravel

База данных

Я работаю с базой данных, которая имеет довольно большие таблицы, и это вызывает у меня проблемы. Одна из них имеет более 120 тыс. Строк.

Что я с этим делаю

Я зацикливаюсь на этой таблице в MakeAverage.php файл, чтобы объединить их около 1 тыс. строк в новой таблице в моей базе данных.

Что не работает

Laravel не позволяет мне обрабатывать все сразу, даже если я пытаюсь DB::disableQueryLog() или или take(1000) предел например. Он возвращает мне пустую страницу каждый раз, даже если мои отчеты об ошибках были включены (вроде как это). Кроме того, у меня не было файла журнала Laravel для этого. Мне пришлось заглянуть в свой php_error.log (я использую MAMP), чтобы понять, что это на самом деле проблема memory_limit.

Что я сделал

Я увеличил объем памяти перед выполнением кода с помощью ini_set('memory_limit', '512M'), (Это плохая практика, я должен сделать это в php.ini.)

Что случилось?

Это сработало! Тем не менее, Laravel выдал мне ошибку, потому что страница не загрузилась после 30 секунд из-за большого количества данных.

1 ответ

Решение

Что я буду делать

Потратив некоторое время на эту проблему и посмотрев на других людей, имеющих подобные проблемы (см. Форум Laravel, 19453595, 18775510 и 12443321), я подумал, что, возможно, PHP не является решением.

Так как, я только создаю Table B от средних значений Table AЯ считаю, что SQL лучше всего соответствует моим потребностям, поскольку он явно быстрее PHP для операций такого типа (см. 6449072), и я могу использовать такие функции, как SUM, AVERAGE, COUNT а также GROUP_BY ( Ссылка).

Другие вопросы по тегам