Bonjour,
Nous souhaitions réinitialiser en masse tous les cours de notre plate-forme (exceptés qq uns).
Nous avons donc repris le formulaire de réinitialisation de cours et nous l'avons adapté afin qu'il permette
- de supprimer en masse (en incluant ou excluant certains cours si besoin)
- de supprimer aussi les méthodes d'inscriptions
Le script est en PJ. Je l'ai utilisé sur mon site de production de 1200 des cours (taille de la base de données : 4 Go, dont 1.7 de log, taille après suppression des logs et réinitialisation : 1 Go).
Il a fallu 5 heures pour réinitialiser tous les cours (sauf quelques-uns). Il est arrivé que la page ne s'arrête jamais de charger. Mais la réinitialisation est bien faite.
Par sécurité, je conseille de modifier le code afin d'ajouter une entrée dans la table log pour s'assurer que tous les cours soient bien traités.
Attention, avant de lancer le script, vous devez vérifier la configuration du serveur PHP (valeur de max_execution_time) si vous prévoyez de réinitialiser un grand nombre de cours (j'avais aussi changer la valeur de user_ini.cache_ttl mais je ne pense pas que cela soit nécessaire).
2 façons de le faire:
- dans le fichier php.ini (max_execution_time = "300000")
- en utilisant php_value dans un fichier htaccess:. php_value max_execution_time "300000"
Note: j'ai essayé avec "0" et j'obtiens "PHP Fatal error: Le temps maximum d'exécution de 0 seconde dépassé".
Enfin, en cherchant (mieux que la première fois), j'ai découvert les scripts en ligne de commande de Tomasz Muras qui est pourrait une alternative intéressante pour les traitements en masse (je n'ai pas testé) :
- https://moodle.org/mod/forum/discuss.php?d=171862#p1027763
- https://github.com/tmuras/moosh#course-restore
Pascal