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'];
}
}
tp5.1加文件锁获取批量新增数据返回的自增id
最新推荐文章于 2022-04-16 09:48:26 发布