阿帕奇配置php mod_php cgi fastcgi访问方式
1 apahe 以动态模块的方法调用php解析脚步 编译php 指定 --with-apxs2=/usr/local/apache/bin/apxs 选项(其中apxs是apache
顺晟科技
2021-06-16 10:27:37
416
今天在博客的评论里,有童鞋提醒我,GORM里也有简化事务处理的帮助函数。源码如下:
//事务启动一个事务作为一个块,返回错误将回滚,否则提交。
函数(数据库*数据库)事务(函数(发送*数据库)错误,选择.*sql .TxOptions()错误错误){
恐慌:=真
如果是提交器,ok :=db。声明。康普尔。(TxCommitter);ok committer!=零{
//嵌套事务
db .保存点(fmt .Sprintf('sp%p ',fc))
delay func(){
//确保在死机、阻塞错误或提交错误时回滚
如果惊慌失措||呃!=零{
db .回滚到(fmt .Sprintf('sp%p ',fc))
}
}()
err=fc(db .会话(会话{WithConditions: true}))
} else {
tx :=db .开始(选项.)
delay func(){
//确保在死机、阻塞错误或提交错误时回滚
如果惊慌失措||呃!=零{
德克萨斯州.回滚()
}
}()
err=fc(tx)
if err==nil {
err=tx .提交()。错误
}
}
恐慌=假
返回
}
思路和我的差不多。
有两个不同,,在获取了委托人的时候,会优先选择使用保存点这个特性,相当于事务里的子事务。
第二,处理恐慌的方式,这一点值得学习。首先在函数的入口处设置变量:惊慌失措:=真,在推迟函数中判断是否恐慌了,从而进行相应处理:
delay func(){
//确保在死机、阻塞错误或提交错误时回滚
如果惊慌失措||呃!=零{
db .回滚到(fmt .Sprintf('sp%p ',fc))
}
}()
那么什么情况下,不会执行呢?当然就是执行到最后的时候,执行了恐慌=假这一行代码之后。
这样就成功避免了使用恢复来判断是否发生了异常。不过也因此,无法在这一层捕捉恐慌了。
28
2021-08
28
2021-08
28
2021-08
16
2021-06
16
2021-06
16
2021-06