KirilLoveVE / exchange1c_v1.6_oc2.3

Opencart 2.x Exchange1c module
127 stars 78 forks source link

Транзакции #6

Open vrtc opened 8 years ago

vrtc commented 8 years ago

Я бы посоветовал импорт обернуть в одну большую транзакцию

$this->db->autoCommit(false);
$this->db->begin_transaction();
...
$this->db->commit();

иначе при обнулении товаров или предварительной очистке бд , юзеры будут видеть пустой сайт или 404 ошибки, что не есть хорошо

но конечно разработчик opencart древний как мамонт и упорно не хочет добавлять поддержку транзакции .

в mysqli.php нужно будет добавить методы

    public function autoCommit($state)
    {
        $this->autocommit = $state;
        $this->link->autocommit($this->autocommit);
    }

    public function begin_transaction()
    {
        if(!$this->autocommit)
        $this->link->begin_transaction();
    }

    public function commit()
    {
        if(!$this->autocommit)
            $this->link->commit();
    }

    public function rollback(){
        if(!$this->autocommit)
            $this->link->rollback();
    }

    public function __destruct()
    {
        if(!$this->autocommit)
            $this->commit();
        $this->link->close();
    }

и тудаже в конструктор

$this->link->autocommit($this->autocommit);
KirilLoveVE commented 8 years ago

Спасибо за совет я постараюсь изучить этот вопрос и внедрить в следующих версиях