美文网首页
PHP网站的高并发处理思路

PHP网站的高并发处理思路

作者: 日三省吾身 | 来源:发表于2018-06-26 16:00 被阅读0次

最近处理一个类似一元购商城网站的支付环节,根据需求,需要在用户支付过程中满足如下条件:

  1.用户可以选择,其购买的产品如果本期没有的情况下,自动进入下一期的购买。

  2.多个用户同时购买同一期,同一个商品,且购买的数量,有的为购买剩余数量的部分,有的为购买剩余的全部。

 3.整个流程一定要快。

这个需求和平常的支付不同,尤其是在处理购买同一期,同一个商品的时候,涉及到改商品进入下一期以及对下一期的购买。如果在商品进入下一期的过程中,另一个相同需求的用户提交了,如何处置。

这里,将重点的方面,进行一一阐释

1.多个相同的请求提交,如何处置

  根据从网上找的资料,这种情况非常类似淘宝的秒杀,最常用的措施就是将用户的请求放到队列中,然后再出队。经过这样的操作,可以让请求一个个被处理。避免大量请求进入,后提交的请求被阻塞。实际操作中,需要用到redis 的list变量类型。

尽快使用队列,也只是避免多个请求同时进入。如果提交的请求相同,测试,还需要用到php和mysql 的锁机制。

PHP中的锁就是文件锁。MYSQL 的锁,主要有共享锁sharedlock和lock for update。

文件锁

文件锁,比较适合对某一段代码进行锁定,如果你希望某一个流程在执行的时候,只能一个请求执行。其他的请求等待。可以使用

mysql的锁

共享锁,允许其他进程查询,但是不允许修改。lock for update 不允许查询和修改。两者都为行级锁

共享锁,适合那些订单数据有需要修改。但是,订单中的信息需要查询的。尤其是那种分发到队列的异步请求。

lock for update 则适合更新比较快的订单,写完就不需要的那种.

2.数据表的修改慢于请求

实际应用中还存在相同的请求同时发送过来时,该条数据的修改速度过慢,也就是说,第一条请求还没有执行表的修改,第二条请求就开始了,这样,就容易造成第二条请求的数据不准确。比如说,第一条请求,用户希望购买剩余的所有产品,在表修改还没有完成时,第二条请求开始,用户还需要该买,但实际上产品已经没有库存了。执行第二条请求的时候,就会报错。

在这个时候,就需要缓存服务器进行记录每次购买后剩余的数量。实际操作中,需要增加一条对该剩余数量的判断,如果剩余数量没有了,则根据用户要求,如果希望购买下一期,则此时触发进入下一期,并购买。如果用户不希望进入下一期,则返回给用户信息。

3.让复杂的请求加快速度

最简单,直接的方法,就是将整个流程进行把控,那些部分是必须执行完成的,比如说,用户的购买记录写入,用户余额扣除,产品余额扣除等。还有一些流程用户看不到。也就是并不一定非常立即完成的,则可以发送到队列中进行异步处理,在执行异步处理中,需要做好失败的预防措施。

简单来说,本文讨论的主要是后端的PHP 处理高并发,主要是用到锁机制,缓存服务器,以及同步和异步队列。这些工具根据业务的特点和流程配合使用。另外,针对数据库和请求,还可以在配置上升级,增加数据库和进行负载均衡,不过,配置是一方面,最终还要落实到流程的控制。

相关文章

  • PHP网站的高并发处理思路

    最近处理一个类似一元购商城网站的支付环节,根据需求,需要在用户支付过程中满足如下条件: 1.用户可以选择,其购买...

  • face 29高并发大流量

    高并发大流量 并发 并发访问,在某个时间点 有多少个访问同时到来 php如何处理网站大流量高并发问题 流量优化 防...

  • php高并发网站处理逻辑

    一、判断大型网站的标准: 1.pv(page views)网页的浏览量: 概念:一个网站所有的页面,在24小时内被...

  • php支持高并发的网站的处理

    1,Webserver(nginx):这一层可以轻松分布式部署的,结合智能DNS解析可以简易的防止单点故障、实现区...

  • PHP学习爱好者,请进

    我有一位同学,一位PHP资深工程师。 拥有丰富的大数据、高并发处理、大型网站架构经验。 曾在新浪视频负责PHP开发...

  • 7.高并发大流量

    php如何解决网站大流量,高并发的问题? 考点 高并发架构相关概念 高并发:通常是指并发访问,也就是在某个时间点,...

  • 广州中软卓越 高并发量网站解决思路(下篇)

    延续《广州中软卓越高并发量网站解决思路(上篇)》未说完的内容,将高并发量网站解决思路剩下的几点说完,和上篇遗留的关...

  • PHP高并发处理方案

    web资源防盗链 盗链是什么,为什么要防? 在自己页面上显示一些不是自己服务器的资源(图片、音频、视频、css、j...

  • 如何应对大流量、高并发

    常用的高并发处理的思路与手段 从服务端视角看高并发 服务端处理请求需要耗费服务端的资源,比如能同时开启的进程数、能...

  • 高并发处理思路与手段

    扩容 垂直扩容(纵向扩展):提高系统部件能力 水平扩容(横向扩展):增加更多系统成员来实现 缓存 缓存特征 命中率...

网友评论

      本文标题:PHP网站的高并发处理思路

      本文链接:https://www.haomeiwen.com/subject/plhmyftx.html