SAUVEGARDEZ VOTRE BASE DE DONNÉES (MYSQL) AUX FORMATS CSV ET SQL
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
21 févr. 2006 à 17:19
paterson59
Messages postés1Date d'inscriptionsamedi 24 février 2007StatutMembreDernière intervention22 mai 2010
-
22 mai 2010 à 01:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
paterson59
Messages postés1Date d'inscriptionsamedi 24 février 2007StatutMembreDernière intervention22 mai 2010 22 mai 2010 à 01:05
Bonjour
Pour PHP5, j'ai tester , il a juste <?php a remplacer ligne 1 de zip.class.php ( a la place de <? )
Sinon fonctionne nickel, merci beaucoup tu as fait un superbe travail .
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 24 août 2008 à 17:25
Rover1be :
Je te laisse voir le code de la source et la configuration de ton serveur afin de regler le probleme avec le ZIP (ouvre le Zip avec notepad pour voir...)
Desole, mais je ne peut repondre a ta question... Bonne chance
-----------------------------------
!!!
IMPORTANT : Cette source n'obtiendra plus jamais de support de ma part :(
Plusieurs raisons. Premierement, je n'en pas le temps. Puis elle a ete developpee en PHP4. "Go To PHP5".
Son comportement n'est plus adapte aux serveurs moderne. J'en suis desole ! Si vous tenez absolument a la faire fonctionner, le code n'est pas extrement complique et pourrai devenir un bel exercice de "reverse ingeenering" pour les novices en PHP.
Bonne chance
!!!
Rover1be
Messages postés1Date d'inscriptionvendredi 21 novembre 2003StatutMembreDernière intervention24 août 2008 24 août 2008 à 14:14
Bonjour,
Beau travail à priori.
Un petit ssoucis, le fichier zip que je recois ne peut s'ouvrir dans windows, ni avec 7zip.
Je reçois un message disant que le zip est corrompu.
Y a t'il moyen de sauvegarder en version sql ou texte ?
Merci
blabartette
Messages postés5Date d'inscriptionvendredi 1 octobre 2004StatutMembreDernière intervention27 février 2008 27 févr. 2008 à 15:58
Cette source est géniale.
Un grand merci, elle vient de me sauver la vie. Je cherche depuis longtemps maintenant.
corresp
Messages postés6Date d'inscriptionvendredi 8 juin 2007StatutMembreDernière intervention26 décembre 2008 3 janv. 2008 à 18:46
Hello,
Ce script correspond tout à fait à ce que je cherche mais j'ai un petit souci avec. Il est bien installé et quand je le lance, il me propose bien les bases et les tables à sauvegarder. Quand je clique sur Télécharger, il m'affiche un message du genre :
compression_level $compression_level; } /* fin rajout */ /** * Converts an Unix timestamp to a four byte DOS date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current Unix timestamp * * @return integer the current date in a four byte DOS format * * @access private */ function unix2DosTime($unixtime 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if (1) { $timearray['year'] = 2000; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } // end if return (($timearray['year'] - 1980) << 25) ..... etc....
La dernière ligne est : Fatal error: Class 'zipfile' not found in C:\Program Files\EasyPHP 2.0b1\www\DBsave\save.php on line 74
Est-ce que quelqu'un aurait une idée du problème ?
D'avance merci.
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 18 juin 2007 à 16:01
merci à vous deux...
hood042
Messages postés8Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention 1 juin 2007 12 juin 2007 à 22:18
Ton script est vraiment très réussi, je lui ai mis 10/10 !
Fourbosk
Messages postés1Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 9 juin 2007 9 juin 2007 à 22:24
Un grand merci pour ce code qui m'aide beaucoup pour le boulot pour cette fin d'année. C'est exactement ce que je cherchais.
fyav
Messages postés124Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention12 février 2010 4 mars 2006 à 08:47
super le script, pour ma part j'ai trouvé un petit soft qui me fait des sauvegardes à heures régulières en format sql et une mise à jour sur une base locale, et c'est hyper rapide, de plus il prends en compte les problèmes de déconnexion à la base distante !!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 févr. 2006 à 16:10
Je suis tout à fait d'accord...et si tu indentes bien ton code malgré tout, c'est le source html généré qui est foireux lol ;-)
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 23 févr. 2006 à 15:06
A mon goût, heredoc n'a qu'un gros défaut (le problème de coloration venant de l'éditeur) :
La balise de fermeture doit obligatoirement être en début de ligne. Faisant bien du tord à l'indentation du script...
Mais sinon, c'est correct !
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 févr. 2006 à 14:48
J'avais entendu dire que c'était plus rapide mais je n'avais jamais testé.
Bah ouais, donc, un peu plus rapide apparemment.
En poussant à 300000 la boucle, curieusement, ça bouge pas mal, heredoc est bousculé par le echo avec apostrophes et virgules, et par le echo avec apostrophes et concaténation, mais reste en tête de très peu.
J'utilise pas mal heredoc ces temps-ci...mais ça dépend des cas, en fait. textpad, que j'utilise en ce moment, apprécie mal aussi lol...
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 23 févr. 2006 à 14:26
Heredoc serait le plus rapide !?! c'est étonnant car il s'agit d'un texte interprété, comme les guillemts. Mais pourquoi pas...
Les virgules sont moins rapides que la concaténation... Mais on le savait déjà : la virgule devient meilleure au delà d'une grosse dizaine de paramètre.
En tout cas, aucune différence fulgurante dans les chronomètres. Pas de quoi changer tous mes guillemets en apostrophes ou en heredoc... (d'autant que ma coloration syntaxique ne digère pas le heredoc)
Merci bien pour ces tests effectués dans un laboratoire indépendant ;)
A+
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 févr. 2006 à 14:03
Et le echo heredoc :
echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}\r\n
HTML;
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 févr. 2006 à 11:25
Et avec ça :
echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);
echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}
HTML;
echo chr(13), chr(10);
??
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 23 févr. 2006 à 11:12
Merci immortalPC pour tes remarques...
Alors :
* Pour les erreurs de PHP, milles excuse, c'est réparé. (Je suis au courrant que les noms de variables sont sensible à la casse)
* Pour la validation... OK ! J'ai maintenant rajouté mes deux petites images W3C-HTML4.1 et W3C-css Youpi !!
* Pour les guillemets... La question est beaucoup plus complexe que tu ne le crois !!!!!!!!
Je sais que les apostrophes sont plus rapide que les guillemets. Donc, j'avais mis des apostrophe dans les boucles longues (récupération des données). Mais pas dans le reste, car le gain de temps comparé à la perte de confort est minime.
Par ailleurs, voici un petit test :
<?php
$quoi = 'guillemets';
$qui = 'ImmortalPC';
$pourquoi = 'pratique';
$encore = 'agréable à lire';
for($i=0; $i<100000; $i++) {
echo "$i : J'aime utiliser les $quoi, même si $qui me le déconseil car c'est franchement $pourquoi, voir plus $encore.\r\n";
}
for($i=0; $i<100000; $i++) {
echo $i.' : J\'aime utiliser les '.$quoi.', même si '.$qui.' me le déconseil car c\'est franchement '.$pourquoi.', voir plus '.$encore.'.'.chr(13).chr(10);
}
for($i=0; $i<100000; $i++) {
echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);
}
echo 'Avec guillemets : ',($tic-$deb),"\r\nAvec les apostrophes : ",($tac-$tic),"\r\nAvec les virgules : ",($fin-$tac),'
';
?>
Et bien après exécution et après l'affichage des milliers de lignes, on à ça :
Avec guillemets : 83.6705679893
Avec les apostrophes : 85.5666708946
Avec les virgules : 150.180143118
Oh !! étonnement... Et non, plus on avance dans le test, plus mon PC rame (car ça mémoire se rempli). Donc le test est biaisé, mais montre que le gain de temps est tellement minime que bien d'autres facteurs de preformances sont prépondérant sur celui-ci.
Enfin, j'ai modifé la source avec plus de ' et moins de " histoire de gagner des millièmes de secondes...
A+
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 22 févr. 2006 à 11:26
Salut,
Ta source ne marche pas !!!
J' entre tout les bon paramètres ( 'localhost', 'root', '')
Il voit toutes mes bases de données et toutes mes tables mais quand j'envoie le formulaire erreur :
Notice: Undefined variable: struct in save.php on line 98
Warning: in_array(): Wrong datatype for second argument in save.php on line 98
Notice: Undefined variable: data in save.php on line 130
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 153
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 154
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 155
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 156
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 157
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 158
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 159
Explications :
Pour l' erreur ligne 98, la variable $struct != $STRUCT
Ex:
<?php
$t = 123;
$T = 456;
echo $t;
?>
Même chose pour la ligne 130 avec la variable $data != $DATA
Ce qui génère une erreur au niveau des entêtes.
Morale -> un variable en majuscule reste du début à la fin en majusclule.
Ensuite pour gagner de la vitesse on code avec les ' ' de partout:
$str.= "INSERT INTO `$table` (".$fields.") VALUES ('".implode("','",$d)."');\r\n";
$str.= 'INSERT INTO `$table` ('.$fields.') VALUES ("'.implode('\',\'',$d).'");'."\r\n";
Quelque remarque en dehors du php, le HTML / XHTML
Va sur http://validator.w3.org/ et essaie de valider ton script !!!
@+
8/10
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 21 févr. 2006 à 17:52
Salut malalam
Merci pour le "joliement codé" :)
J'en profite pour faire une remarque :
!!!! NOTE IMPORTANTE !!!!
Lors de la création du Zip, tous le fichier est stocké dans la mémoire Vive de votre Zordi (enfin du serveur quoi)
Par exemple, j'ai créé cette appli pour exporter une base menant à un Zip de 7 Mo (avec le plus gros taux de compression)
Par défaut, votre serveur PHP n'a pas le droit de bouffer plus de 8Mo... C'est chaud !!!
Pour cela, la variable de configuration 'memory_limit' peut-être changée (si vous avez les droits suffisant pour le faire bien sûr)
ini_set('memory_limit','32M'); // pour 32 Mo
Voilou
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 21 févr. 2006 à 17:19
Hello J_G,
define('DB_USER', 'proot'); ? Lol... Pourquoi pas 'prout'? ;-)
Sinon, sympa le code :-) J'ai pas grand chose à dire dessus, c'est joliment codé :-)
22 mai 2010 à 01:05
Pour PHP5, j'ai tester , il a juste <?php a remplacer ligne 1 de zip.class.php ( a la place de <? )
Sinon fonctionne nickel, merci beaucoup tu as fait un superbe travail .
24 août 2008 à 17:25
Je te laisse voir le code de la source et la configuration de ton serveur afin de regler le probleme avec le ZIP (ouvre le Zip avec notepad pour voir...)
Desole, mais je ne peut repondre a ta question... Bonne chance
-----------------------------------
!!!
IMPORTANT : Cette source n'obtiendra plus jamais de support de ma part :(
Plusieurs raisons. Premierement, je n'en pas le temps. Puis elle a ete developpee en PHP4. "Go To PHP5".
Son comportement n'est plus adapte aux serveurs moderne. J'en suis desole ! Si vous tenez absolument a la faire fonctionner, le code n'est pas extrement complique et pourrai devenir un bel exercice de "reverse ingeenering" pour les novices en PHP.
Bonne chance
!!!
24 août 2008 à 14:14
Beau travail à priori.
Un petit ssoucis, le fichier zip que je recois ne peut s'ouvrir dans windows, ni avec 7zip.
Je reçois un message disant que le zip est corrompu.
Y a t'il moyen de sauvegarder en version sql ou texte ?
Merci
27 févr. 2008 à 15:58
Un grand merci, elle vient de me sauver la vie. Je cherche depuis longtemps maintenant.
3 janv. 2008 à 18:46
Ce script correspond tout à fait à ce que je cherche mais j'ai un petit souci avec. Il est bien installé et quand je le lance, il me propose bien les bases et les tables à sauvegarder. Quand je clique sur Télécharger, il m'affiche un message du genre :
compression_level $compression_level; } /* fin rajout */ /** * Converts an Unix timestamp to a four byte DOS date and time format (date * in high two bytes, time in low two bytes allowing magnitude comparison). * * @param integer the current Unix timestamp * * @return integer the current date in a four byte DOS format * * @access private */ function unix2DosTime($unixtime 0) { $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if (1) { $timearray['year'] = 2000; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } // end if return (($timearray['year'] - 1980) << 25) ..... etc....
La dernière ligne est : Fatal error: Class 'zipfile' not found in C:\Program Files\EasyPHP 2.0b1\www\DBsave\save.php on line 74
Est-ce que quelqu'un aurait une idée du problème ?
D'avance merci.
18 juin 2007 à 16:01
12 juin 2007 à 22:18
9 juin 2007 à 22:24
4 mars 2006 à 08:47
c'est dumptimer http://www.richtsoft.com/mysql_17_backup.html
23 févr. 2006 à 16:10
23 févr. 2006 à 15:06
La balise de fermeture doit obligatoirement être en début de ligne. Faisant bien du tord à l'indentation du script...
Mais sinon, c'est correct !
23 févr. 2006 à 14:48
Bah ouais, donc, un peu plus rapide apparemment.
En poussant à 300000 la boucle, curieusement, ça bouge pas mal, heredoc est bousculé par le echo avec apostrophes et virgules, et par le echo avec apostrophes et concaténation, mais reste en tête de très peu.
J'utilise pas mal heredoc ces temps-ci...mais ça dépend des cas, en fait. textpad, que j'utilise en ce moment, apprécie mal aussi lol...
23 févr. 2006 à 14:26
Les virgules sont moins rapides que la concaténation... Mais on le savait déjà : la virgule devient meilleure au delà d'une grosse dizaine de paramètre.
En tout cas, aucune différence fulgurante dans les chronomètres. Pas de quoi changer tous mes guillemets en apostrophes ou en heredoc... (d'autant que ma coloration syntaxique ne digère pas le heredoc)
Merci bien pour ces tests effectués dans un laboratoire indépendant ;)
A+
23 févr. 2006 à 14:03
Guillemets : 8.81445813179
Apostrophes : 7.956854105
Virgules : 8.28347611427
Heredoc : 7.12662100792
Et le echo heredoc :
echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}\r\n
HTML;
23 févr. 2006 à 11:25
echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);
echo <<<HTML
{$i} : J'aime utiliser les {$quoi} même si {$qui} me le déconseille car c'est franchement {$pourquoi} voir plus {$encore}
HTML;
echo chr(13), chr(10);
??
23 févr. 2006 à 11:12
Alors :
* Pour les erreurs de PHP, milles excuse, c'est réparé. (Je suis au courrant que les noms de variables sont sensible à la casse)
* Pour la validation... OK ! J'ai maintenant rajouté mes deux petites images W3C-HTML4.1 et W3C-css Youpi !!
* Pour les guillemets... La question est beaucoup plus complexe que tu ne le crois !!!!!!!!
Je sais que les apostrophes sont plus rapide que les guillemets. Donc, j'avais mis des apostrophe dans les boucles longues (récupération des données). Mais pas dans le reste, car le gain de temps comparé à la perte de confort est minime.
Par ailleurs, voici un petit test :
<?php
$quoi = 'guillemets';
$qui = 'ImmortalPC';
$pourquoi = 'pratique';
$encore = 'agréable à lire';
$date = gettimeofday(true);
$deb = $date['sec'] + $date['usec']/1000000;
echo "\r\n";
for($i=0; $i<100000; $i++) {
echo "$i : J'aime utiliser les $quoi, même si $qui me le déconseil car c'est franchement $pourquoi, voir plus $encore.\r\n";
}
$date = gettimeofday(true);
$tic = $date['sec'] + $date['usec']/1000000;
for($i=0; $i<100000; $i++) {
echo $i.' : J\'aime utiliser les '.$quoi.', même si '.$qui.' me le déconseil car c\'est franchement '.$pourquoi.', voir plus '.$encore.'.'.chr(13).chr(10);
}
$date = gettimeofday(true);
$tac = $date['sec'] + $date['usec']/1000000;
for($i=0; $i<100000; $i++) {
echo $i,' : J\'aime utiliser les ',$quoi,', même si ',$qui,' me le déconseil car c\'est franchement ',$pourquoi,', voir plus ',$encore,'.',chr(13),chr(10);
}
$date = gettimeofday(true);
$fin = $date['sec'] + $date['usec']/1000000;
echo 'Avec guillemets : ',($tic-$deb),"\r\nAvec les apostrophes : ",($tac-$tic),"\r\nAvec les virgules : ",($fin-$tac),'
';
?>
Et bien après exécution et après l'affichage des milliers de lignes, on à ça :
Avec guillemets : 83.6705679893
Avec les apostrophes : 85.5666708946
Avec les virgules : 150.180143118
Oh !! étonnement... Et non, plus on avance dans le test, plus mon PC rame (car ça mémoire se rempli). Donc le test est biaisé, mais montre que le gain de temps est tellement minime que bien d'autres facteurs de preformances sont prépondérant sur celui-ci.
Enfin, j'ai modifé la source avec plus de ' et moins de " histoire de gagner des millièmes de secondes...
A+
22 févr. 2006 à 11:26
Ta source ne marche pas !!!
J' entre tout les bon paramètres ( 'localhost', 'root', '')
Il voit toutes mes bases de données et toutes mes tables mais quand j'envoie le formulaire erreur :
Notice: Undefined variable: struct in save.php on line 98
Warning: in_array(): Wrong datatype for second argument in save.php on line 98
Notice: Undefined variable: data in save.php on line 130
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 153
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 154
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 155
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 156
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 157
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 158
Warning: Cannot modify header information - headers already sent by (output started at save.php:130) in save.php on line 159
Explications :
Pour l' erreur ligne 98, la variable $struct != $STRUCT
Ex:
<?php
$t = 123;
$T = 456;
echo $t;
?>
Même chose pour la ligne 130 avec la variable $data != $DATA
Ce qui génère une erreur au niveau des entêtes.
Morale -> un variable en majuscule reste du début à la fin en majusclule.
Ensuite pour gagner de la vitesse on code avec les ' ' de partout:
$str.= "INSERT INTO `$table` (".$fields.") VALUES ('".implode("','",$d)."');\r\n";
$str.= 'INSERT INTO `$table` ('.$fields.') VALUES ("'.implode('\',\'',$d).'");'."\r\n";
header("Content-disposition: attachment; filename=$filename");
header('Content-disposition: attachment; filename='.$filename);
Quelque remarque en dehors du php, le HTML / XHTML
Va sur http://validator.w3.org/ et essaie de valider ton script !!!
@+
8/10
21 févr. 2006 à 17:52
Merci pour le "joliement codé" :)
J'en profite pour faire une remarque :
!!!! NOTE IMPORTANTE !!!!
Lors de la création du Zip, tous le fichier est stocké dans la mémoire Vive de votre Zordi (enfin du serveur quoi)
Par exemple, j'ai créé cette appli pour exporter une base menant à un Zip de 7 Mo (avec le plus gros taux de compression)
Par défaut, votre serveur PHP n'a pas le droit de bouffer plus de 8Mo... C'est chaud !!!
Pour cela, la variable de configuration 'memory_limit' peut-être changée (si vous avez les droits suffisant pour le faire bien sûr)
ini_set('memory_limit','32M'); // pour 32 Mo
Voilou
21 févr. 2006 à 17:19
define('DB_USER', 'proot'); ? Lol... Pourquoi pas 'prout'? ;-)
Sinon, sympa le code :-) J'ai pas grand chose à dire dessus, c'est joliment codé :-)