• 技术文章 >后端开发 >PHP问题

    php接口如何处理并发

    (*-*)浩(*-*)浩2019-10-21 10:25:50原创1750
    对于商品抢购等并发场景下,可能会出现超卖的现象,这时就需要解决并发所带来的这些问题了

    在PHP语言中并没有原生的提供并发的解决方案,因此就需要借助其他方式来实现并发控制。

    php入门到就业线上直播课:进入学习

    方案一:使用文件锁排它锁

    flock函数用于获取文件的锁,这个锁同时只能被一个线程获取到,其它没有获取到锁的线程要么阻塞,要么获取失败

    在获取到锁的时候,先查询库存,如果库存大于0,则进行下订单操作,减库存,然后释放锁 (推荐学习:PHP视频教程

    方案二:使用Mysql数据库提供的悲观锁

    Innodb存储引擎支持行级锁,当某行数据被锁定时,其他进程不能对这行数据进行操作

    先查询并锁定行:

    select stock_num from table where id=1 for update
    if(stock_num > 0){
    //下订单
    update table set stock_num=stock-1 where id=1
    }

    方案三:使用队列

    将用户的下单请求依次存入一个队列中,后台用一个单独的进程处理队列中的下单请求

    方案四:使用Redis

    redis的操作都是原子性的,可以将商品的库存存入redis中,下单之前对库存进行decr操作,如果返回的值大于等于0等可以下单,否则不能下单,这种方式效率较高

    if(redis->get('stock_num') > 0){
     stock_num = redis->decr('stock_num')
     if(stock_num >= 0){
     //下订单
     }else{
     //库存不足
     }
    }else{
    //库存不足
    }

    以上就是php接口如何处理并发的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:php函数都分为哪两种? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• php是网页文件吗• php5和php7垃圾回收上的区别是什么?• php如何实现多表查询• php500网络错误
    1/1

    PHP中文网