百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php并发处置的几种办法
分享文章到:

php并发处置的几种办法

发布时间:09/01 来源:未知 浏览: 关键词:

关于商品抢购等并发场景下,大概会显现超卖的现象,这时就需要解决并发所带来的这些问题了。

在PHP说话中并没有原生的供给并发的解决方案,因此就需要借助其他方式来实现并发操纵。

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

flock函数用于猎取文件的锁,这个锁同时只能被一个线程猎取到,其它没有猎取到锁的线程要末堵塞,要末猎取失败。在猎取到锁的时候,先查询库存,假如库存大于0,则停止下订单操纵,减库存,然后开释锁。

方案二:使用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并发处置的几种办法的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板