Laravel, как оптимизировать дорогой расчет в памяти? - PullRequest
0 голосов
/ 03 апреля 2019

Я написал функцию для среднего расчета для школьного класса. Логика такова: В качестве входных данных у меня есть количество студентов, количество предметов, количество заметок по каждому предмету. Каждый студент имеет среднее по каждому предмету. По каждому предмету усреднение по предмету составляет ученик из двух нот и среднее из двух оценок. При отсутствии заметки система устанавливает ноль. Для сбора заметок существует период, и в конце сбора система автоматически вычисляет средние значения.

//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 () в коллекции кандидатов, но у меня все еще остались те же результаты. Как оптимизировать такой расчет? спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...