Я пытаюсь получить большое количество (категорий) функций (данных) из веб-службы. Получение всех данных через веб-сервис занимает довольно много времени (время отклика и т. Д. Более 5 часов). Но я получаю ошибку «Разрешенный объем памяти 134217728 байт исчерпан» после первого часа.
У меня есть категории, хранящиеся в моей локальной базе данных. Чтобы получить функции категории, я просто использую идентификатор этой категории, и сервис возвращает мне функции этой категории. Я мог бы сохранить эти возвращенные данные немедленно в БД, но тогда я не смог бы использовать функции, пока весь процесс занимает.
Вместо этого я пытаюсь сохранить все данные результатов в массиве и после завершения всего цикла сохранить весь массив в БД. Таким образом, функции будут заблокированы только на время записи (около 5 минут).
чтобы показать примерно:
foreach($categories as $category){
$features = $webService->getCategoryFeatures($category->id);
// ...and some other logics
}
foreach($features = $feature){
App\Feature::create($feature);
// ...and some other logics
}
Есть около 4000 категорий. Некоторые категории имеют более 30000 функций. Так что первая последовательность занимает довольно много времени. Вторая последовательность, в которой я просто сохраняю данные в БД, занимает всего несколько минут.
Мне нужен способ, где я могу временно сохранить возвращенные функции без ошибки памяти. Кроме того, я не хочу увеличивать лимит.
Любые идеи будут оценены.