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