Я написал функцию для среднего расчета для школьного класса.
Логика такова:
В качестве входных данных у меня есть количество студентов, количество предметов, количество заметок по каждому предмету.
Каждый студент имеет среднее по каждому предмету.
По каждому предмету усреднение по предмету составляет ученик из двух нот и среднее из двух оценок. При отсутствии заметки система устанавливает ноль.
Для сбора заметок существует период, и в конце сбора система автоматически вычисляет средние значения.
//firt step, fill zero if note is missed
foreach ($students as $student){
foreach ($subjects as $subject){
$this->checkNotes($student,$subject);
}
}
//step two, calcul avarage
foreach ($students->chunk(100) as $chunk){
foreach ($chunk as $student){
foreach ($subjects as $subject){
$this->subjectAverage($student, $subject)
}
}
}
Функция работает с небольшим объемом данных. Например, если у меня 10 учеников, 5 предметов, 2 заметки по каждому предмету ... Но когда у меня большой запрос данных, например: 50000 учеников, 30 предметов, 2 заметки по каждому предмету ... приложение приводит к сбою всей системы. Я пытался реализовать эту функцию как chunk () в коллекции кандидатов, но у меня все еще остались те же результаты. Как оптимизировать такой расчет? спасибо за помощь