PHP架構是如何處理MySQL事務多次開啟和事務操作嵌套的?求架構源碼

來源:互聯網
上載者:User
關鍵字 php 事務 mysql
一般的PHP架構是如何處理MySQL事務多次開啟和事務操作嵌套的?求架構源碼

回複內容:

一般的PHP架構是如何處理MySQL事務多次開啟和事務操作嵌套的?求架構源碼

哈哈,最近剛把這個功能提交到ThinkPHP主線上,原理是記錄事務的嵌套數量,只在最外層提交事務。你可以參考參考:

public function startTrans(){    $this->initConnect(true);    if (!$this->_linkID) {        return false;    }    //資料rollback 支援    if (0 == $this->transTimes) {        // 記錄當前操作PDO        $this->transPdo = $this->_linkID;        $this->_linkID->beginTransaction();    }    $this->transTimes++;    return;}public function commit(){    if ($this->transTimes == 1) {        // 由嵌套事物的最外層進行提交        $result = $this->_linkID->commit();        $this->transTimes = 0;        $this->transPdo = null;        if (!$result) {            $this->error();            return false;        }    } else {        $this->transTimes--;    }    return true;}public function rollback(){    if ($this->transTimes > 0) {        $result = $this->_linkID->rollback();        $this->transTimes = 0;        $this->transPdo = null;        if (!$result) {            $this->error();            return false;        }    }    return true;}

https://github.com/youmingdot/thinkphp/blob/master/ThinkPHP/Library/Think/Db/Driver.class.php#L267-L328

https://github.com/yeaha/owl/blob/master/src/Service/DB/Adapter.php#L132-L183

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.