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