Sauvegarde automatique de bdd

cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005 - 20 juil. 2005 à 13:48
cs_marq Messages postés 1 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 décembre 2008 - 19 déc. 2008 à 01:36
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

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
20 juil. 2005 à 14:15
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, ++
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 juil. 2005 à 14:16
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.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 juil. 2005 à 14:16
bah voila, lol.
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
20 juil. 2005 à 14:28
Je vais tester ca dans la semaine je vous remercie :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
9 août 2005 à 12:35
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 ?
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
9 août 2005 à 12:46
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)
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
9 août 2005 à 12:48
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.
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
9 août 2005 à 12:51
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!
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
9 août 2005 à 12:58
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 ?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
9 août 2005 à 13:00
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...
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
9 août 2005 à 13:15
Je devrais avoir une reponse au plus tard demain d'apres leur formulaires si j'ai une reponse je la transmettrais :)
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
23 août 2005 à 10:10
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
23 août 2005 à 10:13
j'aurais pas mieux dit
0
cs_switsh Messages postés 27 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 18 août 2005
23 août 2005 à 10:13
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.
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
23 août 2005 à 10:16
vouaip... tou ca parce qu'ils ne veulent pas donner a Apache le driot d'executer cette commande
0
newmorning Messages postés 40 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 5 novembre 2022
4 sept. 2008 à 15:10
"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 ?
0
cs_marq Messages postés 1 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 décembre 2008
19 déc. 2008 à 01:36
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.
0