Plan du projet backup en stage : explication du code en Français

Je vous ai parlé du projet de backup différentiel à faire pendant mon stage de webdev. Le code est disponible à cet endroit en suivant ce lien vers mon compte GitHub. En attendant, pour que tout le monde puisse comprendre un peu comment le code s’organise et pour tenter d’expliquer le code en Français, voici un plan du code de ce projet.

En passant la souris sur les mots soulignés, il y a plus d’explications.

Actions à lancer quand l’utilisateur clique sur un bouton

  • Si bouton « complet » => GenerateBackupComplet()
  • Si bouton « structure » => GenerateStructure()
  • Si bouton « data » =>  GenerateData()
  • Si bouton « datadiff » => Verif()

Les fonctions :

Verif($nomtable, $messageverif)

Cette fonction a pour but de vérifier si on doit faire un backup ou si ce n’est pas nécessaire. Si c’est nécessaire, en fonction du type de table choisie par l’utilisateur, une fonction précise sera exécutée.

  • Requête pour récupérer date de dernier backup ($lastbackup), nombres d’entrées et table sélectionnée depuis TableInfoBackup
  • Requête pour récupérer la date de dernière modif  effectuée dans la DB ($lastupdate).
  • Si la valeur contenue dans $lastbackup est supérieur à celle de $lastupdate => Message « Backup déjà effectué » (et on n’exécute aucune fonction de backup).
  • Sinon, si $lastbackup est à zéro ou inexistant, c’est qu’il n’y a jamais eu aucun backup de données, on exécute GenerateData()
  • Sinon, on vérifie dans quel cas se trouve la table sélectionnée :
  • Si c’est une table sans date, on exécute GenerateUpdateData()
  • Si c’est une table avec des dates, on exécute GenerateUpdateDataDate()
  • Si c’est la table Special, on exécute GenerateUpdateDataSpecial()
  • Si c’est une table qui ne répond à rien de tout cela, on exécute GenerateData()
  • Affichage d’un message pour l’utilisateur
  • On retourne un message à afficher selon ce qui a été fait.

GenerateBackupComplet($nomtable)

Cette fonction sert à récupérer toutes les informations nécessaires à la création d’un fichier de type backup complet (structure ET données d’une table). A la fin de la fonction, on appelle une autre fonction (NewFichierBackup) qui va réaliser la création, l’écriture et la fermeture du fichier.

  • Récupération des infos des colonnes
  • Écriture de la structure de la table
  • Si un champs peut être NULL ou pas
  • Récupération des valeurs à insérer
  • Si clef primaire ou unique
  • Écriture des valeurs de la table
  • Récupération des infos de la table
  • Insertion d’une entrée dans TableInfoBackup pour enregistrer les infos du backup et état de la table
  • Exécution de NewFichierBackup()

GenerateStructure($nomtable)

Cette fonction sert à récupérer toutes les informations nécessaires à la création d’un fichier qui sauvegardera la structure d’une table choisie.

  • Récupération des infos des colonnes
  • Écriture de la structure de la table
  • Récupération des infos de la table
  • Insertion d’une entrée dans TableInfoBackup pour enregistrer les infos du backup et état de la table
  • Exécution de NewFichierBackup()

GenerateData($nomtable)

Cette fonction sert à récupérer toutes les informations nécessaires à la création d’un fichier qui sauvegardera les données d’une table choisie. On appelle ici la fonction UpdateInfoBackup pour mettre à jour les informations concernant la table et la date du nouveau backup effectué dans la TableInfoBackup.

  • Récupération des valeurs à insérer
  • Écriture des valeurs de la table
  • Exécution de UpdateInfoBackup()
  • Exécution de NewFichierBackup()

GenerateUpdateData($nomtable)

Cette fonction va générer un backup différentiel (récupérer uniquement les données ajoutées ou mises à jour depuis le dernier backup) des données pour les tables n’ayant pas de date mais dont on peut retrouver les traces de mises à jour à l’aide d’une table spécifique, la table TableAction.

  • Récupération date du dernier backup pour avoir le nom du fichier du dernier backup fait (pour repérer le fichier à éditer) et pour vérifier si un backup de données a déjà été fait.
  • Switch pour modifier la requête selon la table sélectionnée
  • Si dans TableAction, l’action est « A » (A pour Ajout) => on va insérer des INSERT dans le fichier.
  • Si dans TableAction, l’action est différente de « A » (M pour Modif ou S pour fin), on fait un update dans le fichier.
  • Exécution de UpdateInfoBackup()
  • Exécution de FichierBackup()

GenerateUpdateDataDate($nomtable)

Cette fonction effectue un backup différentiel des données des tables ayant des champs date.

  • Récupération date du dernier backup pour avoir le nom du fichier du dernier backup fait (pour repérer le fichier à éditer) et pour vérifier si un backup de données a déjà été fait.
  • Stockage des champs de type date de début dans un tableau et date d’update dans un autre.
  • Récupération des valeurs à insérer en fonction de la date du dernier backup, en fonction des champs de début et champs d’update
  • Ajouter les nouvelles entrées
  • Créer les updates des données déjà sauvegardées
  • Exécution de FichierBackup()
  • Exécution de UpdateInfoBackup()

GenerateUpdateDataSpecial($nomtable)

Fonction qui va faire un backup différentiel des données spécifiquement pour la table Special car les dates liées à cette table sont une table bien particulière, la table TableAlt.

  • Récupération date du dernier backup pour avoir  le nom du fichier du dernier backup fait (pour repérer le fichier à éditer) et pour vérifier si un backup de données a déjà été fait.
  • Récupération des infos de la table en fonction des dates (Datedebut) de TableAlt
  • Récupération des infos de la table en fonction des dates (Datefin) de TableAlt
  • Exécution de UpdateInfoBackup()
  • Exécution de FichierBackup()

UpdateInfoBackup($nomtable)

  • Récupération du nombre d’entrées (rows) de la table
  • Vérification si backup déjà existant ou pas pour mettre à jour les infos dans TableInfoBackup

NewFichierBackup($nomtable, $typebackup, $ecritdata)

  • Création, écriture en w+, fermeture du fichier si c’est un nouveau fichier backup

FichierBackup($nomtable,$datepourfichier,$ecritdata)

  • Création ou update, écriture en a+, fermeture du fichier en vue d’un backup de données

Affichage du tableau pour user

  • Création 1er tableau avec informations des tables provenant de information_schema.
  • Création 2nd tableau avec informations des tables provenant de TableInfoBackup.
  • Fusion du tableau

Partie HTML

  • Affichage du tableau
  • Boutons « complet », « structure », « data », « datadiff ».
  • Script pour sélectionner toutes les checkboxes du tableau.

Un commentaire pour “Plan du projet backup en stage : explication du code en Français

Laisser un commentaire

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut