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