Overview
Comment:DB: Forcer la fin des transactions en cas de crash du script pour empêcher de crasher la DB
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: 0bd6e3acda108dc68503130c305d23a4a7ba5db0
User & Date: bohwaz on 2017-06-06 00:01:36
Other Links: branch diff | manifest | tags
Context
2017-06-08
03:40
Correction : gérer les noms de plugins en majuscules (signal par @Youssef) check-in: c3541ceb63 user: bohwaz tags: dev
2017-06-06
00:01
DB: Forcer la fin des transactions en cas de crash du script pour empêcher de crasher la DB check-in: 0bd6e3acda user: bohwaz tags: dev
2017-05-30
00:28
Renvoyer la taille du fichier pour permettre d'avoir une progression du téléchargement check-in: f286f9d40f user: bohwaz tags: dev
Changes

Modified src/include/lib/Garradin/DB.php from [3716397b8d] to [e4161210dd].

57
58
59
60
61
62
63








64
65
66
67
68
69
70
    {
        $this->flags = \SQLITE3_OPEN_READWRITE;

        if ($create)
        {
            $this->flags |= \SQLITE3_OPEN_CREATE;
        }









        // Ne pas se connecter ici, on ne se connectera que quand une requête sera faite
    }

    public function close()
    {
        $this->db->close();







>
>
>
>
>
>
>
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    {
        $this->flags = \SQLITE3_OPEN_READWRITE;

        if ($create)
        {
            $this->flags |= \SQLITE3_OPEN_CREATE;
        }

        // Fermer toute transaction en cours à la fin du script
        // pour éviter de locker la base
        // ceci est utile notamment en cas d'erreur dans le script ou de
        // max_execution_time
        register_shutdown_function(function () {
            DB::getInstance()->commit(true);
        });

        // Ne pas se connecter ici, on ne se connectera que quand une requête sera faite
    }

    public function close()
    {
        $this->db->close();
117
118
119
120
121
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136
137
138
139
        }

        $this->transaction++;

        return $this->transaction == 1 ? true : false;
    }

    public function commit()
    {
        if ($this->transaction == 1)
        {
            $this->connect();
            $this->db->exec('END;');

        }

        if ($this->transaction > 0)
        {
            $this->transaction--;
        }

        return $this->transaction ? false : true;
    }








|

|



>

<
|







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

140
141
142
143
144
145
146
147
        }

        $this->transaction++;

        return $this->transaction == 1 ? true : false;
    }

    public function commit($force = false)
    {
        if ($force || $this->transaction == 1)
        {
            $this->connect();
            $this->db->exec('END;');
            $this->transaction = 0;
        }

        else if ($this->transaction > 1)
        {
            $this->transaction--;
        }

        return $this->transaction ? false : true;
    }