Sauvegardes automatiques un jour sur deux (suivant jour pair ou impair)

Sauvegardes automatiques un jour sur deux (suivant jour pair ou impair)

par Séverin Terrier,
Nombre de réponses : 1
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Il peut arriver, si on a de très nombreux cours à sauvegarder (ou un serveur lent), que cela prenne très longtemps, et déborde sur les horaires de travail, voire finisse par planter.

Une solution possible pour répartir cette charge est de ne sauvegarder chaque jour qu'un cours sur deux : sauvegarder les cours dont l'identifiant est pair les jours pairs, et les cours dont l'identifiant est impair les jours impairs.

On peut faire ça avec une modification dans le fichier backup/util/helper/backup_cron_helper.class.php ; dans la fonction run_automated_backup, en ajoutant quelques lignes juste avant la ligne contenant "// Check if the course is not scheduled to run right now" :

                // On saute les cours avec ID impair les jours pairs,
                // et les cours avec ID pair les jours impairs
                if ((date('z') % 2) && (!($course->id % 2))) {
                    $skipped = 1;
                    $skippedmessage = 'Pas de sauvegarde des cours pairs les jours impairs';
                }
                elseif ((!(date('z') % 2)) && ($course->id % 2)) {
                    $skipped = 1;
                    $skippedmessage = 'Pas de sauvegarde des cours impairs les jours pairs';
                }

Il faudra que vos sauvegardes automatiques soient programmées tous les jours ; c'est cet ajout qui se chargera de ne pas sauvegarder tous les cours.

Pour ceux qui veulent avoir tous les détails, vous pouvez lire cette discussion.

Séverin

Moyenne des évaluations Utile (5)
En réponse à Séverin Terrier

Re: Sauvegardes automatiques de certains cours en fonction du jour de la semaine

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Comme je l'avais envisagé dans une autre discussion, on peut souhaiter segmenter encore plus les sauvegardes automatiques des cours.

On peut faire ça avec une modification dans le fichier backup/util/helper/backup_cron_helper.class.php ; dans la fonction run_automated_backup, en ajoutant quelques lignes juste avant la ligne contenant "// Check if the course is not scheduled to run right now" :

                // Suivant le jour de la semaine, on ne sauvegarde que certains cours.
                // Lundi    : cours dont l'ID termine par 1 ou 2
                // Mardi    : cours dont l'ID termine par 3 ou 4
                // Mercredi : cours dont l'ID termine par 5 ou 6
                // Jeudi    : cours dont l'ID termine par 7 ou 8
                // Vendredi : cours dont l'ID termine par 9 ou 0
                // Samedi et dimanche, cours avec ID   pair les jours   pairs (dans l'année)
                //                  ou cours avec ID impair les jours impairs (dans l'année)

                // On mémorise le dernier chiffre de l'ID du cours
                $finID=intval(substr(strval($course->id), -1));

                if     ((date('w') == 1) && ($finID < 1 || $finID > 2)) {
                    $skipped = 1;
                    $skippedmessage = 'Lundi : seuls les cours terminant par 1 ou 2 sont sauvegardés';
                }
                elseif ((date('w') == 2) && ($finID < 3 || $finID > 4)) {
                    $skipped = 1;
                    $skippedmessage = 'Mardi : seuls les cours terminant par 3 ou 4 sont sauvegardés';
                }
                elseif ((date('w') == 3) && ($finID < 5 || $finID > 6)) {
                    $skipped = 1;
                    $skippedmessage = 'Mercredi : seuls les cours terminant par 5 ou 6 sont sauvegardés';
                }
                elseif ((date('w') == 4) && ($finID < 7 || $finID > 8)) {
                    $skipped = 1;
                    $skippedmessage = 'Jeudi : seuls les cours terminant par 7 ou 8 sont sauvegardés';
                }
                elseif ((date('w') == 5) && ($finID < 9 || $finID > 0)) {
                    $skipped = 1;
                    $skippedmessage = 'Vendredi : seuls les cours terminant par 9 ou 0 sont sauvegardés';
                }

                elseif ((date('w') == 6) || (date('w') == 0)) {

                  // On saute les cours avec ID impair les jours pairs,
                  // et les cours avec ID pair les jours impairs
                  if ((date('z') % 2) && (!($course->id % 2))) {
                      $skipped = 1;
                      $skippedmessage = 'Pas de sauvegarde des cours impairs les jours pairs';
                  }
                  elseif ((!(date('z') % 2)) && ($course->id % 2)) {
                      $skipped = 1;
                      $skippedmessage = 'Pas de sauvegarde des cours pairs les jours impairs';
                  }

                }

Cela donne l'idée du fonctionnement, et pourrait facilement être adapté pour sauvegarder d'autres cours en fonction des jours, suivant les choix/besoins.

Il faudra que vos sauvegardes automatiques soient programmées tous les jours ; c'est cet ajout qui se chargera de ne sauvegarder que certains cours, en fonction des jours.

Séverin

PS : date('w') donne le numéro du jour de la semaine (0 étant dimanche) ; et date('z') donne le numéro du jour dans l'année

Moyenne des évaluations Utile (5)