php并发处理的几种方法-php教程

资源魔 33 0

关于商品抢购等并发场景下,可能会呈现超卖的景象,这时候就需求处理并发所带来的这些成绩了。

正在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并发解决的几种办法的具体内容,更多请存眷资源魔其它相干文章!

标签: php 方法 php开发教程 php开发资料 php开发自学 并发处理

抱歉,评论功能暂时关闭!