php如何防止高并发

php如何防止高并发

1、超发原因

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

超发原因.jpg

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

文件锁思路

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

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

悲观锁.jpg

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

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/2524090.html

(0)
上一篇 2025年3月5日 17:49:56
下一篇 2025年3月5日 17:50:05

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

相关推荐

  • PHP如何关闭8080端口

    第一步: 打开开始菜单,在搜索框里输入CMD,回车,进入MS-DOS命令窗口。 第二步: 执行命令netstat -ano -a 显示所有连接和监听端口 立即学习“PHP免费学习笔记(深入)”; -n 以数字形式显示地址和端口号。 此选项一…

    2025年3月5日
    000
  • php如何防止sql注入攻击

    php简单实现防止sql注入的方法 方法一:execute代入参数  $var_Value) {    //获取POST数组最大值    $num = $num + 1;  }  //下标为i的数组存储的是商品id, 下标为j数组的存储的是…

    2025年3月5日
    200
  • php如何多线程

    php开启多线程的方法 php如何安装pthreads的拓展的,我采用的是windows安装,我本机的开发环境是phpstudy。 有几点特别需要注意,在window中此类拓展一定是要在线程安全(ts)的php版本中运行。 安装 立即学习“…

    2025年3月5日 编程技术
    200
  • php判断星期几

    php判断今天是星期几 php的date()函数十分强大,合理利用该函数的各种参数可以实现我们日常开发中的各种需求,今天说说如何使用php判断今天是星期几的方法。 PHP date()参数说明 这里主要用到了 w 这个参数,关于这个参数的解…

    2025年3月5日
    200
  • php判断文件是否可写

    php判断文件或目录是否可写 在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写,详情如下: 参考 is_writable — 判断给定的文件名是否可写。 说明 立即学习“PHP免费学习笔记(深入)”; bool…

    2025年3月5日
    200
  • php判断文件夹是否存在

    php判断文件或目录是否存在 1、file_exists()函数 判断文件文件是否存在 实例: //$file = “check.txt”;if(file_exists($file)){    echo “当前目录中,文件”.$file.”…

    2025年3月5日
    200
  • php判断两个字符串是否相同

    php判断两个字符串是否相同 strncmp()函数定义如下: strncmp(string1,string2,length) 参数说明: string1 必需。规定要比较的首个字符串。 立即学习“PHP免费学习笔记(深入)”; strin…

    2025年3月5日
    200
  • php连接mysql数据库中文乱码

    要解决php数据库乱码问题可以做以下设置: 一、数据库里的设置: 1、在MYSQL中新建数据库的时候,数据库选择UTF-8编码既字符集设定为utf-8_unicode_ci(Unicode (多语言),不区分大小写),库里面 表table的…

    2025年3月5日
    200
  • php框架区别

    php常见框架区别 一、CI框架 CI框架是一个简单快速的PHP MVC轻量级框架,它执行效率高,快速简洁,代码量少,适合中小型项目开发,也可以做大型项目,但扩展能力不是很好。 优势:框架比较简单,适合入门开发,易学,上手快,静态化很容易,…

    2025年3月5日
    200
  • php教程书籍有哪些

    如果你学过其他的语言,你会发现php其实还算简单的。有人说php学习适合看手册,但是依然有很多的经典书可以帮助大家入门和提高。以下4本你就可以好好读读。 1、细说PHP PHP入门的经典,内容详实易懂,全面涵盖了web开发的所需的知识内容。…

    2025年3月5日 编程技术
    200

发表回复

登录后才能评论