在webman中使用事务问题

shanyi

问题描述

我是在webman用使用GatewayWorker,之后做一些数据库的查询新增操作

  // 启动事务
  Db::startTrans();
  try {
    $Hardwaredata = json_decode(trim($param), true);
      if ($Hardwaredata === null || !array_key_exists("xwst", $Hardwaredata)) {
          $this->StatusReturn(0, $client_id);
          return;
      }
  if($Hardwaredata['xwst']==1){
      if($boxinfo){
              //执行一些数据库查询和插入的操作
              Gateway::sendToClient($client, $send_datas);
              return;
          }else{
              Gateway::sendToClient($client, $send_datas);
              return;
      }
  }

    DB::commit();//提交至数据库
} catch (\Throwable $e) {
    DB::rollback();//数据库回滚
}

我在使用事务的时候,我在Gateway::sendToClient 给用户发送消息 我就想不执行下面代码了 我就return了,但是貌似这个会变成数据库的数据没有提交,这样数据没有插入成功。这种情况怎么办呀

1147 3 1
3个回答

Gin

return 前 提交事务啊

  • 暂无评论
tanhongbin

人才 你终于出现了 事务 必须提交 然后 最好是使用try catch 防止 出现大量事务不提交 导致死锁 问题

  • 暂无评论
TM

不提交也不回滚吗

  • 暂无评论
年代过于久远,无法发表回答
×
🔝