gpt4 book ai didi

PHP mysql 数据库两个同时请求同一个表

转载 作者:行者123 更新时间:2023-11-29 07:23:40 25 4
gpt4 key购买 nike

如果用户调用两个请求,检查用户余额然后对余额执行操作会怎么样。它会引起任何问题吗?例如那两个代码:

$user = User::find(1);
if($user['balance']>250) {
// Here for example long loop
$user->update([
'balance' => DB:raw('balance - 100')
]);
}

第二个脚本做类似的事情。可能是这样的情况:在第一个请求中 if 语句被传递,然后执行长循环,同时第二个请求运行,如果检查余额,这个 if 在 $user->update() 之前执行是在第一次请求时执行的,那么用户在没有余额的时候可以通过if语句吗?

最佳答案

是的,可能是这样的情况。要避免这种情况,请使用 LOCK/UNLOCK TABLE

$user = User::find(1);
if($user['balance']>250) {
User::lockTable(); // method name/use depends on your framework
// Here for example long loop
$user->update([
'balance' => DB:raw('balance - 100')
]);
User::unlockTable();
}

关于PHP mysql 数据库两个同时请求同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com