automatisation d'une tache backup

Eléphanteau du PHP | 13 Messages

03 mars 2009, 10:33

bonjour, j'ai un fichier php : save_bd.php qui me permet de sauvergarder ma base de donnée SQL. Par contre, je dois encore presser un bouton Sauvegarder pour que cela lance la sauvegarde. Y-a-t-il moyen de faire automatique la sauvegarde, soit un passer ce fichier dans une moulinette de cron ou faire un appel automatique de cette page tout les X jours?

merci de votre aide.

voici mon code de la page save_bd:

Code : Tout sélectionner

<?php function dumpMySQL($serveur, $login, $password, $base, $mode) { $connexion = mysql_connect($serveur, $login, $password); mysql_select_db($base, $connexion); $entete = "-- ----------------------\n"; $entete .= "-- dump de la base ".$base." au ".date("d-M-Y")."\n"; $entete .= "-- ----------------------\n\n\n"; $creations = ""; $insertions = "\n\n"; $listeTables = mysql_query("show tables", $connexion); while($table = mysql_fetch_array($listeTables)) { // si l'utilisateur a demandé la structure ou la totale if($mode == 1 || $mode == 3) { $creations .= "-- -----------------------------\n"; $creations .= "-- creation de la table ".$table[0]."\n"; $creations .= "-- -----------------------------\n"; $listeCreationsTables = mysql_query("show create table ".$table[0], $connexion); while($creationTable = mysql_fetch_array($listeCreationsTables)) { $creations .= $creationTable[1].";\n\n"; } } // si l'utilisateur a demandé les données ou la totale if($mode > 1) { $donnees = mysql_query("SELECT * FROM ".$table[0]); $insertions .= "-- -----------------------------\n"; $insertions .= "-- insertions dans la table ".$table[0]."\n"; $insertions .= "-- -----------------------------\n"; while($nuplet = mysql_fetch_array($donnees)) { $insertions .= "INSERT INTO ".$table[0]." VALUES("; for($i=0; $i < mysql_num_fields($donnees); $i++) { if($i != 0) $insertions .= ", "; if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob") $insertions .= "'"; $insertions .= addslashes($nuplet[$i]); if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob") $insertions .= "'"; } $insertions .= ");\n"; } $insertions .= "\n"; } } mysql_close($connexion); $fichierDump = fopen("dump.sql", "wb"); fwrite($fichierDump, $entete); fwrite($fichierDump, $creations); fwrite($fichierDump, $insertions); fclose($fichierDump); echo "La base de donneé nopixel_bd a été sauvegardé"; } dumpMySQL("localhost", "user", "pass", "nomdelabase", 3); ?> </span></p> <p class="titre_index"><a href="dump.sql" target="_blank">T&eacute;l&eacute;charger le backup </a></p> <span class="titre_index"> <?php // On inclu la classe include('class_benchmark.php'); // On intialise le benchmark $bench = new bench(); sleep(2); // On pose un marqueur, l'argument est le nom du marqueur $bench->set_mark(1); sleep(3); // Fin du benchmark $bench->finish(); ?>

ViPHP
ViPHP | 1380 Messages

03 mars 2009, 10:46

Quel type de serveur? Dédié? Linux?
ripat

Eléphanteau du PHP | 13 Messages

03 mars 2009, 10:51

c'est un serveur dédié

ViPHP
ViPHP | 1380 Messages

03 mars 2009, 13:10

Si dédié, utilise mysqldump et cron. Deux lignes de code tout au plus (possible en une seule).

Code : Tout sélectionner

man cron man mysqldump
ripat