IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Bloquer site web pour sauvegarde mysql [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Par défaut Bloquer site web pour sauvegarde mysql
    Bonjour,

    Je finisalise un site web en php utilisant une base MySQL.

    Chaque jour, je souhaites sauvegarder ma base avec un ptit script du genre (voir code plus bas) :

    Le fichier du dump.sql fait environ 1meg, et le microtime() me dit que le script prend environ 0.15 seconde a réaliser la sauvegarde.

    Donc j'imagine que si la base fait... 100meg, cela prendra pas mal plus de temps.

    Donc, devrais-je bloquer le site internet lorsque la sauvegarde ce réalise ?
    Pour ainsi informer le visiteurs que la sauvegarde est en cours et ainsi éviter toute modifications des données de la base pendant la sauvegarde ?

    Merci



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    function mysql_structure() 
    {
       $host = 'xxxxxx';
       $user = 'xxxxxx';
       $pass = 'xxxxx';
       $base = 'xxxxxxxx';
     
       $link = mysql_connect($host, $user, $pass);
       mysql_select_db($base, $link);
     
       $sql = "SHOW TABLES FROM ".$base;
       $result = mysql_query($sql);
     
       if (!$result) 
       {
          echo "Erreur DB, impossible de lister les tables\n";
          echo 'Erreur MySQL : ' . mysql_error();
          exit;
       }
     
       //$tables = mysql_list_tables($base);
       while ($donnees = mysql_fetch_row($result))
       {
          $table = $donnees[0];
          $num_rows = mysql_num_rows(mysql_query("SELECT * FROM ".$table, $link));
     
          $res = mysql_query("SHOW CREATE TABLE $table");
          if ($res)
          {
             $insertions = "";
             $tableau = mysql_fetch_array($res);
     
             $tableau[1] .= ";";
    	$dumpsql[] = str_replace("\n", "", $tableau[1]);
    	$req_table = mysql_query("SELECT * FROM $table");
    	$nbr_champs = mysql_num_fields($req_table);
    	$cptEnr = 1;
     
    	$cptLigne = 1;
    	while ($ligne = mysql_fetch_array($req_table))
    	{
    	   if($cptEnr==1)
    	      $insertions .= "INSERT INTO $table VALUES ";
     
    	   $insertions .= "(";
    	   for ($i=0; $i<=$nbr_champs-1; $i++)
    	   {
    	      $insertions .= "'" . mysql_real_escape_string($ligne[$i]) . "'";
    	      if($i!=$nbr_champs-1)
    		$insertions .= ", ";
                }
    	   $insertions .= ")";
     
    	   $cptLigne = $cptLigne +1;
    	   if($num_rows != $cptLigne-1)
    	   {
    	      if($cptEnr>0)
    	      {
    	         if($cptEnr>100)
    	         {
       	            $cptEnr = 0;
    	            $insertions .= "; ";
    	         }
    	         else
    	         {
    	            $insertions .= ", ";
    	         }
    	      }				
                }				
    	   else
    	   {
    	      $insertions .= "; ";
       	   }
     
    	   $insertions .="\r";
    	   $cptEnr = $cptEnr+1;
    	}
    	if ($insertions != "")
    	{
                $dumpsql[] = $insertions;
    	}
          }			
       }
       return implode("\r", $dumpsql);
    }

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    je ne sais pas si on peut bloquer un site directement via du code php, et je ne pense pas qu'un site qui est fréquemment bloqué soit une bonne solution
    pour ce qui est de la sauvegarde de ta base de données par un script, je ne sais pas pourquoi j'ai une certaine réticence à cela, est ce que ton hébergeur n"offre pas des outils pour faire cela?

    De toute façon tu peut faire ta sauvegarde sans bloquer le site web et sans se soucier des modifs des utilisateurs, si les modifications ne concerne que les données et pas la structure

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Par défaut
    Bonjour,

    En fait, j'avais penser faire un truc du genre, mettre la date de dernière sauvegarde dans un fichier texte, si la sauvegarde doit etre fait, au moins informer le visiteurs que la sauvegarde est en cours, sinon il se demandera pourquoi c'est si long, et attendera surement pas (quelques seconde d'attentes).

    Cela dit, s'il n'y a pas risque d'altérations des données lors du dump, alors pas besoin de bloquer le site pour les autres visiteurs mais par contre...
    Si la sauvegarde a lieu, par exemple entre un INSERT sur la table a, et un UPDATE sur la table b, fait par le même utilisateurs, la sauvergarde ne comportera pas toute les données de l'utilisateurs ou je me trompes ?

    Je suis chez ovh, oui il a y un outil pour se faire, mais il n'est pas automatique, même ovh propose des scripts pour faire la sauvegarde.
    On ne peut récupérer de chez OVH que 3 sauvegarde, du jour, de la veille, et de la dernière semaine.

    J'aurais donc aimer avoir une sauvegarde automatiquement sans avoir a le faire moi même. On sait jamais, si on ne peut le faire soit même pour une raison ou l'autre, cest quand même bien de l'avoir sous la main

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    par exemple entre un INSERT sur la table a, et un UPDATE sur la table b, fait par le même utilisateurs, la sauvergarde ne comportera pas toute les données de l'utilisateurs ou je me trompes ?
    bien sur qu'elle ne contiendra pas toute les données, mais cela est tres normal, ce sera comme dans le cas ou l'utilisateur fera ses modifications une heure apres la sauvegarde, c'est tres normal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Crer un site web pour mobile
    Par HwRZxLc4 dans le forum Débuter
    Réponses: 0
    Dernier message: 02/06/2008, 10h25
  2. Création site web pour une sociéte (publicité)
    Par bahhak dans le forum Débuter
    Réponses: 4
    Dernier message: 22/11/2007, 10h40
  3. Site web pour mobile
    Par asmodee_mf dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 13/11/2006, 13h56
  4. Réponses: 6
    Dernier message: 27/09/2006, 19h31
  5. Site web pour corriger les fautes.
    Par Xzander dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 22/07/2006, 19h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo