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;
}
这篇关于PHP框架是如何处理MySQL事务多次开启和事务操作嵌套的?求框架源码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文