Overview
Comment: | Sauvegarde : bloquer les écritures dans la base de données avant création de la sauvegarde |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
af13e835b6b7477951006b7cb58b3328 |
User & Date: | bohwaz on 2017-05-25 01:03:09 |
Other Links: | branch diff | manifest | tags |
Context
2017-05-25
| ||
05:46 | Changement de la taille de page de SQLite check-in: 1fec967f50 user: bohwaz tags: dev | |
01:03 | Sauvegarde : bloquer les écritures dans la base de données avant création de la sauvegarde check-in: af13e835b6 user: bohwaz tags: dev | |
2017-05-24
| ||
07:38 | Personnalisation des couleurs: nettoyage et commentaires du code JS check-in: ba76f8a90c user: bohwaz tags: dev | |
Changes
Modified src/include/lib/Garradin/Sauvegarde.php from [ace718c666] to [8cfee07aa3].
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | * @param boolean $auto Si true le nom de fichier sera celui de la sauvegarde automatique courante, * sinon le nom sera basé sur la date (sauvegarde manuelle) * @return string Le nom de fichier de la sauvegarde ainsi créée */ public function create($auto = false) { $backup = str_replace('.sqlite', ($auto ? '.auto.1' : date('.Y-m-d-His')) . '.sqlite', DB_FILE); copy(DB_FILE, $backup); return basename($backup); } /** * Effectue une rotation des sauvegardes automatiques * association.auto.1.sqlite deviendra association.auto.2.sqlite par exemple * @return boolean true | > > > > > > > | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | * @param boolean $auto Si true le nom de fichier sera celui de la sauvegarde automatique courante, * sinon le nom sera basé sur la date (sauvegarde manuelle) * @return string Le nom de fichier de la sauvegarde ainsi créée */ public function create($auto = false) { $backup = str_replace('.sqlite', ($auto ? '.auto.1' : date('.Y-m-d-His')) . '.sqlite', DB_FILE); // Acquire a shared lock before copying $db = DB::getInstance(); $db->exec('BEGIN IMMEDIATE TRANSACTION;'); copy(DB_FILE, $backup); $db->exec('END TRANSACTION;'); return basename($backup); } /** * Effectue une rotation des sauvegardes automatiques * association.auto.1.sqlite deviendra association.auto.2.sqlite par exemple * @return boolean true |
︙ | ︙ | |||
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | /** * Renvoie sur la sortie courante le contenu du fichier de base de données courant * @return boolean true */ public function dump() { $in = fopen(DB_FILE, 'r'); $out = fopen('php://output', 'w'); while (!feof($in)) { fwrite($out, fread($in, 8192)); } fclose($in); // Ajout du hash pour vérification intégrité fwrite($out, sha1_file(DB_FILE)); fclose($out); return true; } | > > > > > > | 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | /** * Renvoie sur la sortie courante le contenu du fichier de base de données courant * @return boolean true */ public function dump() { // Acquire a shared lock before copying $db = DB::getInstance(); $db->exec('BEGIN IMMEDIATE TRANSACTION;'); $in = fopen(DB_FILE, 'r'); $out = fopen('php://output', 'w'); while (!feof($in)) { fwrite($out, fread($in, 8192)); } fclose($in); $db->exec('END TRANSACTION;'); // Ajout du hash pour vérification intégrité fwrite($out, sha1_file(DB_FILE)); fclose($out); return true; } |
︙ | ︙ |