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);
}