Bonjour Ghislain et désolé pour l’énorme délai de réponse (on s’est parlé par e-mail bien avant, mais pour que ce post ne reste pas éternellement sans réponse, et étant donné que nous publierons très bientôt la version 1.11.6 de Chamilo, je tenais à faire le point. Pour d’autres qui liraient ce post sans me connaître, je suis le leader du projet Chamilo et il est donc important pour moi que des observations (légitime) de ce genre ne restent pas ignorées.
Le problème que tu mentionnes nous a été rapporté par de nombreux utilisateurs. Le seul point commun que nous avons trouvé était qu’ils utilisaient plus ou moins tous des infrastructures assez légères, et ils repéraient donc ce problème bien plus fortement que des utilisateurs en hébergement plus conséquent.
Chamilo étant très attentif à l’utilisation des ressources (l’un de nos arguments étant que Chamilo utilise environ 40% moins de processeur et de mémoire que Moodle dans un contexte d’utilisation de base), il est bien entendu important pour nous d’essayer d’y remédier (même si le parcours n’est pas le plus utilisé par des écoles déconnectées du tiers monde fonctionnant sur les laptops OLPC ou sur Raspberry Pi).
Je suis donc content de pouvoir affirmer qu’une première solution a été trouvée suite à la découverte d’une « erreur » dans la migration des versions 1.9 vers 1.10, ou plutôt dans le changement de structure de la base de données entre ces versions, puisque cela affecte également les nouvelles installations de 1.10 et 1.11.
Détail non nécessaire dans le paragraphe ci-dessous, passer pour ceux qui veulent seulement la solution:
Dans ces versions, nous avons modifié la structure de la base de données ajoutant un champ « iid » (clef primaire) dans toutes les tables de cours, puisque nous sommes passés (entre 1.8 et 1.9) d’une structure de multiples bases de données vers une structure de base de données unique (longue histoire que je ne détaillerai pas ici). Comme il est de coutume dans les bases de données relationnelles, nous avons donc utilisé cette nouvelle clef primaire comme index, modifiant le code de Chamilo pour utiliser des requêtes JOIN utilisant ce champ plutôt qu’une combinaison de deux champs différents (c_id et id) que nous utilisions auparavant. Malheureusement, dans ce processus, quelques requêtes nous ont échappé. C’est le cas d’une requête importante pour les parcours d’apprentissage dans Chamilo. Cela signifie en particulier que des requêtes sur les tables c_lp_item et consort chargées (avec plusieurs centaines d’enregistrements) seront particulièrement lentes, et de plus en plus lentes avec une quantité croissante d’enregistrements.
La solution donc, qui devrait accélérer considérablement le code d’une 1.10, serait de rajouter un index sur le champ « id » de la table c_lp_item. Ce n’est peut-être pas suffisant pour réduire le temps de chargement de 11s à 0.1s comme ça devrait être le cas, mais ça devrait sans trop de problème générer un boost de 10 fois la vitesse, si la table est particulièrement chargée.
Voilà, en espérant que ça t’aide encore. En tout cas, dans la version 1.11.6, le problème est corrigé dans le code et donc une mise à jour de 1.10 ou 1.11 vers 1.11.6 devrait apporter une accélération considérable du temps de chargement des pages de parcours.