建议批量导入数据时加强数据监测,增加事务处理

thinkphp3的事务处理

        $trans = M();
        $trans->startTrans();   // 开启事务
        if (empty($err_message)) {
            try {   // 异常处理
                foreach ($data as $d2) {
                    $auth = M('m_xtxl_cy')->add($xt_cy);
                    $add_count++;
                    if(empty($auth)){
                        $auth_all = false;
                    }
                }
            } catch (\Exception $ex) { //命名空间需要\
                $auth_all = false;
                $err_message .= '未知的异常数据!';
            }
        }
        if (empty($auth_all) || !empty($err_message)) {
            $trans->rollback();
            $json_result['status'] = 0;
            $json_result['message'] = '本次导入失败:' . $err_message;
        } else {
            $trans->commit();
            $json_result['status'] = 1;
            $json_result['message'] = '导入成功!本次操作新增数据:'.$add_count.'条。';
        }

关于事务的不提交和回滚,摘自网络:

在同一事务条件下,回滚和不提交,表现是一样的
但是还有些差别
事务处理,是将操作事件交给数据库(模拟)运行,直到commit操作,才使得修改实际产生效果,你可以看做是未提交事务都是处于一个临时库中进行
回滚是对于同一个事务,如果产生了错误,那么取消这个临时库中的操作,不对实际数据产生影响
最主要的区别在于,如果不回滚,这些临时操作会持续到这个个connection结束为止,也就是虽然你看不到,但是临时库的操作依然存在,而回滚是即时生效,其实都是回滚了,只是时间点的不一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值