Laravel如何优化内存中的昂贵计算?

时间:2019-04-03 20:51:22

标签: php laravel eloquent

我写了一个用于平均上课的函数。 逻辑是: 作为输入,我有很多学生,很多科目,每个科目的许多笔记。 每个学生在每个科目的平均成绩。 在每门科目中,有两个音符的学生和两个年级的平均值对该科目进行平均。在没有音符的情况下,系统将设置为零。 有一段收集笔记的时间,收集结束时,系统会自动计算平均值。

//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(),但结果仍然相同。如何优化这样的计算?谢谢你的帮助

0 个答案:

没有答案