开发者社区> 问答> 正文

我这样设计流程能有效防止高并发吗?

设计了一个轻量级的用户资金表和操作流程,希望得到大家的指证,先谢过。
一、用户资金的变动表的表结构,大致有下面几个字段:
1.用户ID
2.余额
3.增加量
4.减少量
5.记录生成时间
6.校验码
7.校验码过期时间
二、操作函数:
1.取用户资金的最近一条记录:
function A(用户ID) {

return $arrRow; 

}
2.写校验码:
function B(用户ID) {

$arrRow = A(用户ID); 
if ($arrRow的校验码是空 || 校验码时间过期) { 
    $str = 校验码; 
    $int = 校验码过期时间; 
    更新arrRow到数据库 
    return $str; 
} 
return false; 

}
3.变动资金:
function C(用户ID, 校验码, 增加量, 减少量) {

$arrRow = A(用户ID); 
if ($arrRow的校验码 == 校验码 && 校验码没有过期) { 
    计算余额; 
    插入一条新的数据到数据库,此新数据里没有校验码和校验码过期时间; 
    return true; 
} 
return false; 

}
三、用户充值/消费记录流程:
新的校验码 = function B(用户ID);
if (false !== 新的校验码) {

结果 = function C(用户ID, 新的校验码, 增加量. 减少量); 

}

展开
收起
落地花开啦 2016-02-08 10:04:39 1845 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    在数据库中存放一个数据版本字段, 在每次更新之前, 一定确保你手里的版本和数据库版本一致, 才能继续. 每次更新时, 同时把版本+1
    比如你这里的校验码,就可以当做数据版本.
    update table set mony=mony+50 where id=1 and 数据版本=你的校验码

    2019-07-17 18:39:28
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
利用 Poplayer 在手淘中实现稳定业务和临时业务分离 立即下载
利用Poplayer在手淘中实现稳定业务和临时业务分离 立即下载
如何做小程序性能优化 立即下载