tp5.1加文件锁获取批量新增数据返回的自增id

public function fileLock() {
        $result = ['code' => 0, 'msg' => ''];
        $data = [
            ['name' => 'zhangsan', 'rand_number' => 1],
            ['name' => 'lisi', 'rand_number' => 2],
            ['name' => 'wangwu', 'rand_number' => 3],
            ['name' => 'zhaoliu', 'rand_number' => 4],
        ];
        $file = fopen('./lock.txt', 'r');
        //加入排它锁
        if (flock($file, LOCK_EX)) {
            Db::startTrans();
            try {
                //批量插入数据后返回受影响的记录数
                $resultNumbers = Db::name('mytest')->insertAll($data);
                //获取批量插入的第一条数据生成的主键的id
                $lastId = Db::name('mytest')->getLastInsID();
                Db::commit();
                $result['code'] = 1;
            } catch (Exception $e) {
                Db::rollback();
                $result['msg'] = $e->getMessage();
            }
            //释放锁
            flock($file, LOCK_UN);
        } else {
            return "Couldn't get the lock!";
        }
        fclose($file);

        if ($result['code']) {
            //组装数据
            for ($i = 0; $i < $resultNumbers; $i++ ) {
                $data[$i]['id'] = $lastId;
                $lastId++;
            }
            dump($data);
        } else {
            return $result['msg'];
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值