Sauvegarde automatique de bdd

Signaler
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005
-
Messages postés
1
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 décembre 2008
-
Bonjour



J'ai créé un site avec bdd dans lequel je rentre des informations. Le
contenu du site est important et si jamais mon hébergeur avait des
problèmes je ne dois pas tout perdre. J'ai pensé faire une sauvegarde
automatique à chaque nouvel envoie d'information. En gros il sagit
d'ajouter des personnes avec plussieurs autres informations les
concernants. Entre 10 et 20 personnes seront rentré par semaines.

Je souhaiterais procéder de la maniere suivante :

Une fois les informations sur la personne envoyées dans la base
automatiquement je sauvegarde celle-ci et je fais un envoie de mail
automatique sur une boite mail prévu a cet effet.



Je voudrais savoir si sauvegarder le contenu d'une base le mettre dans
une variable et l'envoyer a une adresse mail demanderais bcp de temps.
En effet je n'ai pas envie d'attendre 3h apres chaque ajouts d'infos.
Le principe étant de ne pa sperdre son temps en ajoutant les nouvelles
personnes dans la base.



Si cela ne demande pas trop de ressource est il possible de faire un
exporte de la base comme dans phpmyadmin comme ca si jamais il y a un
problème je recupere le dernier mail et j'importe le contenu dans ma
base une fois les problèmes resolu.



Merci :)

17 réponses

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Hello, je suis pas sur d'avoir tout compris ce que tu demandes, mais quoi qu'il en soit ce bout de code peut t'aider: il s'agit d'un code sans fioriture pour sauver et mailer une bdd...

<?php

function mail_attachement($to , $sujet , $message , $fichier , $typemime , $nom , $reply , $from){
$limite = "_parties_".md5(uniqid (rand()));

$mail_mime = "Date: ".date("l j F Y, G:i")."\n";
$mail_mime .= "MIME-Version: 1.0\n";
$mail_mime .= "Content-Type: multipart/mixed;\n";
$mail_mime .= " boundary="----=$limite"\n\n";

//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
$texte = "This is a multi-part message in MIME format.\n";
$texte .= "Ceci est un message est au format MIME.\n";
$texte .= "------=$limite\n";
$texte .= "Content-Type: text/plain; charset="iso-8859-1"\n";
$texte .= "Content-Transfer-Encoding: 7bit\n\n";
$texte .= $message;
$texte .= "\n\n";

//le fichier
$attachement = "------=$limite\n";
$attachement .= "Content-Type: $typemime; name="$nom"\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename="$nom"\n\n";

$fd = fopen( $fichier, "r" );
$contenu = fread( $fd, filesize( $fichier ) );
fclose( $fd );
$attachement .= chunk_split(base64_encode($contenu));

$attachement .= "\n\n\n------=$limite\n";
mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom: $from\n".$mail_mime);
}

$text = 'Salut, voici le matos que tu voulais';
$fichier = 'db.sql';
$typemime = 'application/text';
$nom = 'sauvegarde_db.sql';
$reply = 'mlk7934@hotmail.com';
$from = 'mlk7934@hotmail.com';

passthru('mysqldump -u username dbname -ppasswd > db.sql');

mail_attachement('mlk7934@hotmail.com' , 'Sauvegarde DB' , $message , $fichier , $typemime , $nom , $reply , $from);

?>

username est le nom d'utilisateur (ne pas oublier le -u), dbname le nom de la base que tu veux sauver et passwd (ne pas oublier le -p) est le mot de passe pour mysql. Oublie pas qu'il faut pouvoir ecrire, donc etre dans un dossier avec un chmod 703

Le probleme connu est que parfois des personnes ont un fichier vide (sosofi pourrait t'en dire qqch! http://phpcs.com/forum.v2.aspx?ID=508416) et aucune idee pourquoi ca ne marche pas chez ces personnes (si quelqu'un a une idee?).

Chez moi tout beigne.

Il faut par contre que ton hebergeur autorise la fonction passthru.

Enjoy, ++
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
hello,



ca va vite etre gros...mais c'est faisable.

Mais bon, ca dependra de la taille de ta base.

Tu fais un dump, ce sera du texte, tu ecris ce texte dans ton email et basta.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
bah voila, lol.
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Je vais tester ca dans la semaine je vous remercie :)
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Bonjour !!

Je susi en train de tester avec un peu de retard car bcp de chose etaient a faire avant la sauvegarde.

Jai créé un dossier sur mon ftp, je lui ai donné la permission 777 pour
etre tranquile j'ai utilisé le code modifié les infos de connection à
la base et de mail mais cela ne marche pas.

J'ai l'erreur suivante :

Warning: fread(): Length parameter must be greater than 0. in //****/test/savebdd.php on line 28



la ligne 28 :

$contenu = fread( $fd, filesize( $fichier ) );



J'ai regardé un peu la fonction fread et il n'y a aps l'air d'avoir
d'erreur auriez vous une idée ? ou cela fait partie des problèmes de
sauvegarde de bases ?
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Bojour,
Apparement, le 2nd paramètre de fread vaut 0, cad que filesize($fichier) renvoie 0 (ou plutôt FALSE) => soit le fichier n'existe pas, soit le serveur n'arrive pas à y accéder.

Arn;o)
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

D'apres l'autre j'ai tenté de créer un fichier avec ca dedans :
<?php passthru('mysqldump -u root ao_champagne > db.sql'); ?>
Lorsque je l'execute j'ai bien la création d'un fichier mais lui aussi vide.
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Ca c'est un probleme etrange que je ne comprends pas.

Certains l'ont, d'autres pas. T'es en tous cas pas le premier a dire ca... J'ai en tous cas la certitude que ca ne vient pas du code php mais de la configuration du serveur puisque tu peux creer un fichier!

A savoir que je n'ai pas ce probleme avec le meme code... c'est pourquoi j'accuse le serveur!
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Je vais tenter de contacter nuxit(hebergeur) pour leur parler de se problème merci pour le code ^^
Y a t il une autre façon de procéder ?
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Moi je n'en connais pas Mais si tu as des news de ton hebergeur, merci de me tenir au courant! Ce probleme m'interesse...
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Je devrais avoir une reponse au plus tard demain d'apres leur formulaires si j'ai une reponse je la transmettrais :)
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
j'aurais pas mieux dit
Messages postés
27
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
18 août 2005

Leur réponse : on va develloper un systeme de sauvegarde en septembre veuillez patienter d'ici la un truc dans le genre ...
Je crois que je n'aurais pas reponse, j'essairais de trouver un autre script si jamais il deande trop cher pour sauvegarder les bases de donnée.
Merci pour l'aide.
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
vouaip... tou ca parce qu'ils ne veulent pas donner a Apache le driot d'executer cette commande
Messages postés
16
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
26 novembre 2021

"D'apres l'autre j'ai tenté de créer un fichier avec ca dedans :
db.sql'); ?>
Lorsque je l'execute j'ai bien la création d'un fichier mais lui aussi vide."

Heu... tu pourrais m'expliquer un peu plus ? J'ai exactement la même erreur et je ne comprend pas exactement ce que tu as fait pour résoudre le pb...

Surtout, tu as trouvé une autre solution depuis le temps ?
Messages postés
1
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 décembre 2008

Tout réside dans l'execution du dump, il manque un paramètre dans la commande, pour un serveur sql chez ovh, et comme pratiquement chez tous les hébergeurs, le serveur sql n'est pas en localhost, il faut donc le préciser dans notre dump.
Si ton fichier en p.j. est vide, c'est simplement parce que:
passthru('mysqldump -u '.$MySQL[user].' -p'.$MySQL[pass].' --opt '.$MySQL[base].' -h '.$MySQL[host].' > upload/db.sql');

Je pense pas devoir expliquer plus l'utilisation de mes variables :P
mon dossier /upload/ est pratique, mais vous pouvez le retirer pour adapter à votre script.