PHP - Procedimiento muy lento. Optimizar código

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 25 puestos en PHP (en relación al último mes)
Gráfica de PHP

Procedimiento muy lento. Optimizar código

Publicado por Carlos (3 intervenciones) el 27/08/2020 05:57:27
Buen día y desde yá, muchas gracias a quién me pueda ayudar.

Estoy trabajando con PHP y MySQL, genero un reporte consolidado de notas, que va por estudiante, por matería y por periodo así:


1

Actualamente, tengo un codigo que funciona, pero creo que el procedimiento estpa muy pesado por lo cual el reporte se demora muchísimo en cargar y necesito optimizar ese código. En los reportes de 36 estudiantes y 15 materias, se demora una eternidad. Alguién me puede dar una idea. Gracias.

Este es el código que tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
while($rest = $resulest->fetch_assoc())
{[
$asignatura = "SELECT DISTINCT a.ida, a.nombreacorto FROM dasigra AS d INNER JOIN asignatura AS a WHERE d.id_gra='$grado' AND a.ida=d.id_asi ORDER BY a.ida";
    $resulasi = $mysqli->query($asignatura);
 
    while($rasi = $resulasi->fetch_assoc())
    {
 
$notaconso1 = "SELECT def, niv FROM estudiante_nota WHERE id_est='$rest[ide]' AND id_asi=$rasi[ida] AND periodo='1'";
        $resulnotaconso1 = $mysqli->query($notaconso1);
        $rnotaconso1 = $resulnotaconso1->fetch_assoc();
 
        if($rnotaconso1['niv']!=NULL){
            if($rnotaconso1['niv']<65){
                $pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['niv'],'BR',0,'C', true);
            }else{
                $pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['niv'],'BR',0,'C');
            }
        }else{
            if($rnotaconso1['def']<65){
                $pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['def'],'BR',0,'C', true);
            }else{
                $pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['def'],'BR',0,'C');
            }
        }

Y esa última consulta se repite para cada periodo, son 4 períodos. El proceso no es optimo. Muchas gracias por su tiempo. Como pueden ver, tomo a cada estudiante, dentro de cada estudiante, tomo cada asignatura y dentro de cada asignatura hago 4 consultas a cada período. :(

Hay una tabla para estudiantes, una para asignaturas y otra para las notas por período. De nuevo gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder