事务和锁代码优化

PHP高可读处理事务

// 基本数据库查询及其他数据依赖
try {
    $db->begin(); // 开启事务
    // 逻辑处理一
    if (逻辑一处理结果不符合预期) {
        throw new DBException('message1', 'code1');
    }
 
 
    // 逻辑处理二
    if (逻辑二处理结果不符合预期) {
        throw new DBException('message2', 'code2');
    }
    ......
    $db->commit();
} catch (DBException $dbException) {
    if ($dbException->getCode() == '某个特定值') {
        $db->commit();// 如果存在某种特殊情况就算上面的处理结果不合预期也要提交数据库操作
    } else {
        $this->rollback();
        $logger->warning(logData);
    }
} catch (\Exception $exception) {
    ...
}
// 好的地方,commit永远在try代码块的最后一行,所有异常都是throw到catch中取处理

PHP高可读处理锁

Last updated