Bonjour,

Il y a quelques temps, j'ai posté un message concernant un problème de
lenteur lorsque l'on voulait visualiser la fiche de résumé d'un élève
(Consultation d'un élève -> Choix d'une classe -> Choix d'un élève). J'ai
depuis fait quelques recherches et pas mal de tests, et j'ai finalement
trouvé le fond du problème. Pour rappeler la configuration de notre serveur
GEPI, nous tournons chez OVH, et voici le résultat de la page de test du
serveur :

> Les données de base de votre serveur web :
>
> Le register_globals est à paramètre inconnu.
>
> Le serveur web est Apache/2.2.X (OVH)
>
> Encodage inconnu -> encodage par défaut : inconnu.
>
> Votre version de php est la 5.2.17 (Gepi nécessite php 5.2.x minimum).
>
> Votre version de serveur de base de données MySql est la 5.1.49-3-log.
>
> Votre version du module GD est la bundled (2.0.34
> compatible) (indispensable pour toutes les images).
>
> ------------------------------
>   Liste des modules implémentés avec votre php : PDO Reflection SPL SQLite
> SimpleXML bcmath calendar cgi ctype curl date dba dbase dom exif filter
> ftp gd gettext gmp hash iconv imap json libxml mbstring mcrypt mhash ming
> mysql mysqli openssl pcre pdf pdo_mysql pdo_pgsql pdo_sqlite pgsql posix
> pspell session soap sockets standard sysvmsg sysvsem sysvshm tokenizer
> wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib
> ------------------------------
> Les réglages php :
>
>    - La mémoire maximale allouée à php est de 128M (*memory_limit*).
>    - La taille maximum d'une variable envoyée à Gepi ne doit pas dépasser
>    64M (*post_max_size*).
>    - Le temps maximum alloué à php pour traiter un script est de 120
>    secondes (Cette valeur devrait suffire dans la grande majorité des cas) (
>    *max_execution_time*).
>
> .......
>


Il semblerait que ce soit une partie bien précise du script PHP
".../eleves/visu_eleve.inc.php" qui pose problème. Après avoir désactivé
tous les affichages des onglets (à savoir "Onglet eleves", "Onglet
responsables", etc) en les mettant en commentaires dans le script, le
chargement de la page s'est fait normalement. Ce n'est qu'en les réactivant
un à un que j'ai pu constater qu'en dé-commentant le code ci-dessous, le
chargement de la page s’allongeait considérablement, surtout pour les
élèves ayant plusieurs bulletins (un par trimestre).
Ce bout de code se trouve à la ligne 1518 du fichier sous l'onglet
"bulletins". C'est celui qui calcule les moyennes sur les bulletins.

for($loop=$periode1;$loop<=$periode2;$loop++) {
>     $periode_num=$loop;
>     include "../lib/calcul_moy_gen.inc.php";
>     //$tab_moy_gen[$loop]=$moy_generale_classe;
>
>
> //======================================================================
>     $tab_moy['periodes'][$periode_num]=array();
>     $tab_moy['periodes'][$periode_num]['tab_login_indice']=$tab_login_indice;
> // [$login_eleve]
>     $tab_moy['periodes'][$periode_num]['moy_gen_eleve']=$moy_gen_eleve;
> // [$i]
>     $tab_moy['periodes'][$periode_num]['moy_gen_eleve1']=$moy_gen_eleve1;
> // [$i]
>     //$tab_moy['periodes'][$periode_num]['moy_gen_classe1']=$moy_gen_classe1;
> // [$i]
>
> $tab_moy['periodes'][$periode_num]['moy_generale_classe']=$moy_generale_classe;
>
> $tab_moy['periodes'][$periode_num]['moy_generale_classe1']=$moy_generale_classe1;
>     $tab_moy['periodes'][$periode_num]['moy_max_classe']=$moy_max_classe;
>     $tab_moy['periodes'][$periode_num]['moy_min_classe']=$moy_min_classe;
>
>     // Il faudrait récupérer/stocker les catégories?
>     $tab_moy['periodes'][$periode_num]['moy_cat_eleve']=$moy_cat_eleve;
> // [$i][$cat]
>     $tab_moy['periodes'][$periode_num]['moy_cat_classe']=$moy_cat_classe;
> // [$i][$cat]
>     $tab_moy['periodes'][$periode_num]['moy_cat_min']=$moy_cat_min; //
> [$i][$cat]
>     $tab_moy['periodes'][$periode_num]['moy_cat_max']=$moy_cat_max; //
> [$i][$cat]
>
>
> $tab_moy['periodes'][$periode_num]['quartile1_classe_gen']=$quartile1_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['quartile2_classe_gen']=$quartile2_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['quartile3_classe_gen']=$quartile3_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['quartile4_classe_gen']=$quartile4_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['quartile5_classe_gen']=$quartile5_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['quartile6_classe_gen']=$quartile6_classe_gen;
>
> $tab_moy['periodes'][$periode_num]['place_eleve_classe']=$place_eleve_classe;
>
>     
> $tab_moy['periodes'][$periode_num]['current_eleve_login']=$current_eleve_login;
> // [$i]
>     //$tab_moy['periodes'][$periode_num]['current_group']=$current_group;
>     if($loop==$periode1) {
>         $tab_moy['current_group']=$current_group; // [$j]
>      }
>     
> $tab_moy['periodes'][$periode_num]['current_eleve_note']=$current_eleve_note;
> // [$j][$i]
>     
> $tab_moy['periodes'][$periode_num]['current_eleve_statut']=$current_eleve_statut;
> // [$j][$i]
>     //$tab_moy['periodes'][$periode_num]['current_group']=$current_group;
>     $tab_moy['periodes'][$periode_num]['current_coef']=$current_coef; //
> [$j]
>     
> $tab_moy['periodes'][$periode_num]['current_classe_matiere_moyenne']=$current_classe_matiere_moyenne;
> // [$j]
>
>     
> $tab_moy['periodes'][$periode_num]['current_coef_eleve']=$current_coef_eleve;
> // [$i][$j] ATTENTION
>     
> $tab_moy['periodes'][$periode_num]['moy_min_classe_grp']=$moy_min_classe_grp;
> // [$j]
>     
> $tab_moy['periodes'][$periode_num]['moy_max_classe_grp']=$moy_max_classe_grp;
> // [$j]
>     if(isset($current_eleve_rang)) {
>         // $current_eleve_rang n'est pas renseigné si $affiche_rang='n'
>         
> $tab_moy['periodes'][$periode_num]['current_eleve_rang']=$current_eleve_rang;
> // [$j][$i]
>     }
>     $tab_moy['periodes'][$periode_num]['quartile1_grp']=$quartile1_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['quartile2_grp']=$quartile2_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['quartile3_grp']=$quartile3_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['quartile4_grp']=$quartile4_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['quartile5_grp']=$quartile5_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['quartile6_grp']=$quartile6_grp;
> // [$j]
>     $tab_moy['periodes'][$periode_num]['place_eleve_grp']=$place_eleve_grp;
> // [$j][$i]
>
>     
> $tab_moy['periodes'][$periode_num]['current_group_effectif_avec_note']=$current_group_effectif_avec_note;
> // [$j]
>
> //======================================================================
>
> }
>

Est ce que l'on peut optimiser ce code? Ou bien dois-je chercher la
solution autre part?

En vous remerciant de votre attention,

Aymeric Challin
Administrateur réseau du lycée François 1er
_________________________________________________________________________________
Documentation Gepi en ligne : http://www.sylogix.org/projects/gepi/wiki
Pour modifier ou résilier votre abonnement à cette liste :
https://lists.sylogix.net/mailman/listinfo/gepi-users

Répondre à