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