Assistance technique

Pb synchro avec base de données externe

 
Patrick Viney au MoodleMoot de Nîmes
Pb synchro avec base de données externe
Moodleurs particulièrement utiles

Bonjour,


Nous avons mis en place pour le Moodle de notre établissement la méthode d'inscription (enrolment) par base de données externe.

Pour mettre à jour cette base de données externe, nous avons mis en place le lancement des tâches suivantes :

1 - Un script propre à notre établissement commence par effacer la base

2 - puis il réécrit toutes les affectations cours / étudiants

3 - Enfin le script sync.php est lancé pour mettre à jour automatiquement toutes les inscriptions.


Entre ces 2 premières phases, il peut se passer plusieurs minutes le temps que la base soit réécrite complètement.

C'est là que se pose notre problème :

Si un étudiant se connecte à Moodle dans cet intervalle à un moment où la base de données externe n'est pas encore complètement réécrite, la synchronisation se fait avec une base vide (ou à moitié vide) et l'étudiant est alors désinscrit. Il ne voit plus sa liste de cours jusqu'à l'exécution de la tâche CRON qui remet alors les choses en place.

En effet, la synchro se fait automatiquement à chaque fois qu'un utilisateur se connecte (c'est bien précisé dans la documentation de ce plugin : "External database enrolment happens at the moment when a user logs into Moodle"). Or, avec la mise en place de notre tâche CRON qui met tout à jour d'un coup (à un moment où on est sûr que la base de données est bien complète et à jour), cette fonctionnalité du plugin ne nous sert à rien, et qui plus est, nous cause ce problème.

Y a-t-il moyen de supprimer cette synchro automatique à la connexion ?

Ou avez-vous une autre solution pour résoudre ce problème ?

Comment évitez-vous cet écueil ?


Merci


Patrick

 
Moyenne des évaluations  -
C'est moi :-)
Re: Pb synchro avec base de données externe
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Bonjour Patrick,

La solution que j'utilise est très simple : je réalise tout mon traitement dans une table (temporaire).

Une fois (seulement) que tous mes traitements sont terminés (et ma table temporaire prête), je supprime la table réelle, et y copie tout le contenu de la table temporaire (ce qui est très rapide).

Du coup, hormis vraiment si quelqu'un se connecte pile au moment de cette opération (qui est réalisée la nuit), pas de souci sourire

Séverin

 
Moyenne des évaluations Utile (1)