PHP如何解决并发下单问题?(不一定是下单,举个例)

查看:171
本文介绍了PHP如何解决并发下单问题?(不一定是下单,举个例)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的:

sql1:查询商品库存
if(库存数量 > 0)
{
    //生成订单...
    sql2:库存-1
}

当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有1个了,在sql1阶段两个人查询到的库存都是>0的,于是最终都执行了sql2,库存最后变为-1,超售了,要么补库存,要么等用户投诉吧。
解决这个问题比较好的方法是什么呢?

解决方案

  • 用事务处理机制

  • 数据表加锁也行(如果你用InnoDB引擎就用行锁;如果你用MyISAM引擎就用表锁)

这篇关于PHP如何解决并发下单问题?(不一定是下单,举个例)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆