PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
PHP
[请益] 如何避免按键精灵的攻击
楼主:
tas72732002
(葱头)
2017-08-18 10:32:27
请问一下各位大大, 最近碰到一个问题
我有一支API, 这支API所做的事情如下:
step 1. 检查金额是否足够(抓DB)
step 2. 如果足够则进行扣款(抓DB)
但我想到一种情况是, 假设目前钱包有100元, 商品价格100元
当两个使用者同时呼叫该API
有可能同时执行了step1, 所以都取到金额为100元,
所以这两个使用者都会购买成功,
因为PHP 不支援多执行绪lock的机制, 我想请问一般都要如何避免这种情况?
作者:
xdraculax
(首席怪叔叔)
2017-08-18 22:18:00
transaction or lock table
作者:
st1009
(前端攻城师)
2017-08-18 14:55:00
时间锁,你抓DB到正式修改资料之间有等待时间确认是否有同时操作
作者:
dinos
(守护神)
2017-08-18 11:26:00
step2的where加上判断余额是否足够
作者:
cf1064
(蚵仔)
2017-08-18 10:57:00
db的select for update?
作者:
agreerga
(鸭毛)
2017-08-18 10:47:00
只锁住step2的扣款动作?
作者:
z20240
(åŸ¹æ ¹)
2017-08-19 17:23:00
update table set price = newPrice where price is enough ;
作者: dou0228 (7777)
2017-08-22 23:18:00
db with transaction
作者:
yanli2
( Yan™)
2017-08-25 03:03:00
要扣款前再抓一次DB 并且延迟几秒
作者:
angelmark
(无言的结局)
2017-09-01 18:07:00
db的autocommit先关闭 在下select时加上for update成功执行完后再把autocommit开启
继续阅读
[请益] 关于 413 Request Entity Too Large
liisi
[请益] xampp装不起来
virgin7
[请益] 关于laravel 无法使用\Config与\Lang
herbacin
[请益]html档传资料到php里却一直出错没有该档案
schedule6666
[请益] radio的检查
j4bteddd
[请益] 容易入门的测试方案
p52189
[请益] radio选择
j4bteddd
[请益] [Solved]php有没有办法能合并影片呢?
BIAO
[请益] 使用SoapClient错误但postman测试正常
sohumi
[请益] external ip换了 ,worldpress登不进去
alexcoco
Links
booklink
Contact Us: admin [ a t ] ucptt.com