在秒杀,抢购等并发场景下,可能会出现超卖的现象,在PHP语言中并没有原生提供并发的解决方案,因此就需要借助其他方式来实现并发控制。
列出常见的解决方案有:
- 1 使用队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重,本文不先不讨论这种方法。
- 2 利用数据库事务特征,做原子更新,此方法需要依赖数据库的事务特性。
- 3 借助文件排他锁,在处理下单请求的时候,用flock锁定一个文件,成功拿到锁的才能处理订单。
redis 事务是原子操作,可以保证订单处理的过程中数据没有被其它并发的进程修改。
示例代码:
关注
打赏
热门博文
- css 灰黑模式切换效果实现
- css 网站页面内容占位加载动画效果的实现
- Vue + element-ui 【前端项目一】控制某个页面不显示导航栏 4
- Vue + element-ui 【前端项目一】Table 表格并实现分页+搜索 3
- Vue + element-ui 【前端项目一】Table 表格并实现分页 2
- PHP 系统函数
- Windows 10 docker-compose 自动化构建【lnmp】
- Windows10 使用 docker 逐一构建 [lnmp]
- HttpServer 5 框架【自定义注解(1)-了解注解、使用第三方库】
- HttpServer 3 框架【最简IoC容器、初步使用第三方DI库】