您好,欢迎访问一九零五行业门户网

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
其它类似信息

推荐信息