php如何处理高并发

php如何处理高并发

高并发下的数据安全

我们知道在多线程写入同一个文件的时候,会存现“线程安全”的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的)。如果是MySQL数据库,可以使用它自带的锁机制很好的解决问题,但是,在大规模并发的场景中,是不推荐使用MySQL的。

秒杀和抢购的场景中,还有另外一个问题,就是“超发”,如果在这方面控制不慎,会产生发送过多的情况。我们也曾经听说过,某些电商搞抢购活动,买家成功拍下后,商家却不承认订单有效,拒绝发货。这里的问题,也许并不一定是商家奸诈,而是系统技术层面存在超发风险导致的。

1、超发的原因

假设某个抢购场景中,我们一共只有100个商品,在最后一刻,我们已经消耗了99个商品,仅剩最后一个。这个时候,系统发来多个并发请求,这批请求读取到的商品余量都是99个,然后都通过了这一个余量判断,最终导致超发。(同文章前面说的场景)

立即学习“PHP免费学习笔记(深入)”;

高并发-2.jpg

在上面的这个图中,就导致了并发用户B也“抢购成功”,多让一个人获得了商品。这种场景,在高并发的情况下非常容易出现。

优化方案1:将库存字段number字段设为unsigned,当库存为0时,因为字段不能为负数,将会返回false

fetch_assoc();  if($row['number']>0){//高并发下会导致超卖      if($row['number']0";      $store_rs=mysqli_query($conn,$sql);      if($store_rs){          //生成订单          insertOrder($order_sn,$user_id,$goods_id,$sku_id,$price,$username,$number);          insertLog('库存减少成功',1,$username);      }else{          insertLog('库存减少失败',2,$username);      }  }else{      insertLog('库存不够',3,$username);  }?>

登录后复制

2、文件锁的思路

对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题。但如果并发高,在我们对文件进行读写操作时,很有可能多个进程对进一文件进行操作,如果这时不对文件的访问进行相应的独占,就容易造成数据丢失。

优化方案4:使用非阻塞的文件排他锁

fetch_assoc();if($row['number']>0){//库存是否大于0    //模拟下单操作    $order_sn=build_order_no();    $sql="insert into ih_order(order_sn,user_id,goods_id,sku_id,price)    values('$order_sn','$user_id','$goods_id','$sku_id','$price')";    $order_rs =  mysqli_query($conn,$sql);    //库存减少    $sql="update ih_store set number=number-{$number} where sku_id='$sku_id'";    $store_rs =  mysqli_query($conn,$sql);    if($store_rs){      echo '库存减少成功';        insertLog('库存减少成功');        flock($fp,LOCK_UN);//释放锁    }else{      echo '库存减少失败';        insertLog('库存减少失败');    }}else{  echo '库存不够';    insertLog('库存不够');}fclose($fp); ?>

登录后复制

推荐教程:PHP视频教程

以上就是php如何处理高并发的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2151736.html

(0)
上一篇 2025年2月25日 05:38:54
下一篇 2025年2月25日 05:39:12

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论