在 Laravel 中处理高并发场景下防止重复获取同一条数据的问题
唐长老网络 Laravel 925阅读
在 Laravel 中处理高并发场景下防止重复获取同一条数据的问题
数据库事务 + 悲观锁 (Pessimistic Locking)
通过数据库的行级锁(如 SELECT FOR UPDATE)锁定目标数据,确保同一时间只有一个请求能操作该数据。
DB::transaction(function () {
// 锁定目标数据行(假设是 orders 表)
$order = Order::where('status', 'pending')
->lockForUpdate() // 行级排他锁
->first();
if ($order) {
// 处理业务逻辑...
$order->update(['status' => 'processed']);
}
});优点: 强一致性保证。
缺点: 高并发下可能引发性能瓶颈(锁竞争)。
标签: