我写了一个用于平均上课的函数。 逻辑是: 作为输入,我有很多学生,很多科目,每个科目的许多笔记。 每个学生在每个科目的平均成绩。 在每门科目中,有两个音符的学生和两个年级的平均值对该科目进行平均。在没有音符的情况下,系统将设置为零。 有一段收集笔记的时间,收集结束时,系统会自动计算平均值。
//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(),但结果仍然相同。如何优化这样的计算?谢谢你的帮助