在 Laravel 中处理高并发场景下防止重复获取同一条数据的问题
在 Laravel 中处理高并发场景下防止重复获取同一条数据的问题
数据库事务 + 悲观锁 (Pessimistic Locking)
通过数据库的行级锁(如 SELECT FOR UPDATE)锁定目标数据,确保同一时间只有一个请求能操作该数据。
DB::transaction(function () {
// 锁定目标数据行(假设是 orders 表)
$order = Order::where('status', 'pending')
->lockForUpdate() // 行级排他锁
->first();
if ($order) {
// 处理业务逻辑...
$order->update(['status' => 'processed']);
}
});
优点: 强一致性保证。
缺点: 高并发下可能引发性能瓶颈(锁竞争)。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

