当前位置:首页 > 科技  > 软件

为什么要推荐使用现代化PHP框架?

来源: 责编: 时间:2024-06-14 17:40:26 99观看
导读概述PHP语言从1995年发布,至今已经有29多年的历史,在期间涌现了成千上万的MVC框架,大致可以将其分为以下三大类:公司内部自研有大量的公司会自研MVC框架,会根据自身业务的特性打造适合自身的PHP框架。PHP开源框架现PHP开

概述

PHP语言从1995年发布,至今已经有29多年的历史,在期间涌现了成千上万的MVC框架,大致可以将其分为以下三大类:B4328资讯网——每日最新资讯28at.com

公司内部自研

有大量的公司会自研MVC框架,会根据自身业务的特性打造适合自身的PHP框架。B4328资讯网——每日最新资讯28at.com

PHP开源框架

现PHP开源社区流行的PHP MVC框架有Yii、Laravel、CodeIgniter、ZendFrameWork、Symfony等;B4328资讯网——每日最新资讯28at.com

C扩展

纯C扩展的PHP MVC框架由于研发难度大,不易修改,学习成本相对较高,故直到近几年才出现,比如Yaf、Phalcon等。B4328资讯网——每日最新资讯28at.com

上述三类的PHP MVC运行的环境为LA(N)MP,而且其中的A(N)是不可或缺的,也就是说他们都需要依赖Web Server来承接用户的请求,将请求转发给PHP进程,解析并执行PHP代码,而这样的工作模式是所有PHPer根深蒂固的认知,甚至笔者在前几年听到有人说我们可以抛弃php-fpm,nginx,心想简直是无稽之谈。B4328资讯网——每日最新资讯28at.com

随着互联网技术的发展,大量公司的后端技术架构都在往微服务架构变迁,微服务架构要求我们尽可能的将我们的业务拆分到独立的部署单元,当然微服务框架的好处是很“诱人”的,但是它会带来大量的成本开销和性能开销,如何在微服务架构实践中节约成本和提升性能是我们不可迈过的沟壑。B4328资讯网——每日最新资讯28at.com

那在PHP生态中传统的LA(N)MP能满足微服务框架的需求吗?

答案显然是不能的。就目前PHP的fastcgi进程管理器php-fpm和nginx的配合已经运行得足够好,但是由于php-fpm本身是同步阻塞进程模型,在请求结束后释放所有的资源(包括框架初始化创建的一系列对象),导致PHP进程空转(创建销毁创建) 消耗大量的CPU资源,从而导致单机的吞吐能力有限。B4328资讯网——每日最新资讯28at.com

我们是不是应该切换开发语言?

先简单的来看换开发语言,一个公司或者团队切换开发语言的成本是巨大的,它直接面临着放弃已有的技术沉淀,学习新的语言生态和习惯做法,并将现有业务的全面重构,同时整个运维技术栈也要同步更新,需要踩过无数个“坑”,所以我们这里暂不展开去讲切换开发语言来解决我们的核心问题。B4328资讯网——每日最新资讯28at.com

那我们还有什么解决方案?

我们分析我们的业务不难发现,90%以上的业务都是IO密集性业务,我们只需要提高IO复用的能力就可以提升单机吞吐能力,另外需要将php-fpm同步阻塞模式替换为异步非阻塞模式,当然不一定使用php-fpm,就可以解决我们的核心问题——性能。不幸的是目前PHP生态中还没有一个工程级别的MVC框架能够满足我们的需求。B4328资讯网——每日最新资讯28at.com

综上所述,我们需要使用全新的现代化的PHP框架Webman,为微服务架构打下坚实的基础。B4328资讯网——每日最新资讯28at.com

PHP-FPM工作模式的问题

图片图片B4328资讯网——每日最新资讯28at.com

B4328资讯网——每日最新资讯28at.com

  • Nginx基于epoll事件模型,一个worker同时可处理多个请求
  • fpm-worker在同一时刻可处理一个请求
  • master进程只负责处理worker进程的监控、日志等
  • 用户端请求由elb解析,再经过nginx解析
  • fpm-worker每次处理请求前需要重新初始化mvc框架,然后再释放资源
  • 高并发请求时,fpm-worker不够用,nginx直接响应502
  • fpm-worker进程间切换消耗大(如某线上业务在4核8G内存服务器实质可利用16个进程)

压测数据对比

目标

  1. 对比在相同硬件条件下,PHP Yii2框架在PHP-5.6及PHP7下echo hello world的QPS,并观察平均响应时间及CPU。
  2. 对比现有某服务在PHP-5.6及PHP7下的QPS

工具

ApacheBench即ab。ab -n xx -c xx -k http://www.tinywan.com/B4328资讯网——每日最新资讯28at.com

硬件

aws c4.xlarge(4核8G)B4328资讯网——每日最新资讯28at.com

Hello World

PHP-5.6/Yii2

开启opcache,64个php-fpm进程,输出hello worldB4328资讯网——每日最新资讯28at.com

nB4328资讯网——每日最新资讯28at.com

cB4328资讯网——每日最新资讯28at.com

qpsB4328资讯网——每日最新资讯28at.com

平均响应时间(ms)B4328资讯网——每日最新资讯28at.com

CPUB4328资讯网——每日最新资讯28at.com

10000B4328资讯网——每日最新资讯28at.com

1B4328资讯网——每日最新资讯28at.com

662.73B4328资讯网——每日最新资讯28at.com

1.509B4328资讯网——每日最新资讯28at.com

6%B4328资讯网——每日最新资讯28at.com

50000B4328资讯网——每日最新资讯28at.com

10B4328资讯网——每日最新资讯28at.com

1435.35B4328资讯网——每日最新资讯28at.com

6.967B4328资讯网——每日最新资讯28at.com

76%B4328资讯网——每日最新资讯28at.com

500000B4328资讯网——每日最新资讯28at.com

20B4328资讯网——每日最新资讯28at.com

1577.16B4328资讯网——每日最新资讯28at.com

13.375B4328资讯网——每日最新资讯28at.com

83%B4328资讯网——每日最新资讯28at.com

500000B4328资讯网——每日最新资讯28at.com

50B4328资讯网——每日最新资讯28at.com

1626.09B4328资讯网——每日最新资讯28at.com

145.953B4328资讯网——每日最新资讯28at.com

89%B4328资讯网——每日最新资讯28at.com

PHP-7/Yii2

开启opcache,64个php-fpm进程,输出hello worldB4328资讯网——每日最新资讯28at.com

nB4328资讯网——每日最新资讯28at.com

cB4328资讯网——每日最新资讯28at.com

qpsB4328资讯网——每日最新资讯28at.com

平均响应时间(ms)B4328资讯网——每日最新资讯28at.com

CPUB4328资讯网——每日最新资讯28at.com

10000B4328资讯网——每日最新资讯28at.com

1B4328资讯网——每日最新资讯28at.com

854.81B4328资讯网——每日最新资讯28at.com

1.170B4328资讯网——每日最新资讯28at.com

18%B4328资讯网——每日最新资讯28at.com

50000B4328资讯网——每日最新资讯28at.com

10B4328资讯网——每日最新资讯28at.com

2008.32B4328资讯网——每日最新资讯28at.com

4.979B4328资讯网——每日最新资讯28at.com

62%B4328资讯网——每日最新资讯28at.com

500000B4328资讯网——每日最新资讯28at.com

20B4328资讯网——每日最新资讯28at.com

2186.90B4328资讯网——每日最新资讯28at.com

9.145B4328资讯网——每日最新资讯28at.com

65%B4328资讯网——每日最新资讯28at.com

500000B4328资讯网——每日最新资讯28at.com

50B4328资讯网——每日最新资讯28at.com

2304.98B4328资讯网——每日最新资讯28at.com

21.692B4328资讯网——每日最新资讯28at.com

69%B4328资讯网——每日最新资讯28at.com

500000B4328资讯网——每日最新资讯28at.com

200B4328资讯网——每日最新资讯28at.com

2331.93B4328资讯网——每日最新资讯28at.com

85.766B4328资讯网——每日最新资讯28at.com

69%B4328资讯网——每日最新资讯28at.com

某服务

  • 1次Redis Get
  • 1次 MongoDB Query
  • 2个广告接口
  • 2个业务接口

PHP-5.6/Yii2

nB4328资讯网——每日最新资讯28at.com

cB4328资讯网——每日最新资讯28at.com

qpsB4328资讯网——每日最新资讯28at.com

平均响应时间(ms)B4328资讯网——每日最新资讯28at.com

CPUB4328资讯网——每日最新资讯28at.com

100B4328资讯网——每日最新资讯28at.com

1B4328资讯网——每日最新资讯28at.com

4.16B4328资讯网——每日最新资讯28at.com

240.168B4328资讯网——每日最新资讯28at.com

9%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

5B4328资讯网——每日最新资讯28at.com

15.36B4328资讯网——每日最新资讯28at.com

325.502B4328资讯网——每日最新资讯28at.com

46%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

10B4328资讯网——每日最新资讯28at.com

18.72B4328资讯网——每日最新资讯28at.com

534.141B4328资讯网——每日最新资讯28at.com

83%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

50B4328资讯网——每日最新资讯28at.com

19.03B4328资讯网——每日最新资讯28at.com

2627.159B4328资讯网——每日最新资讯28at.com

99%B4328资讯网——每日最新资讯28at.com

PHP-7/Yii2

nB4328资讯网——每日最新资讯28at.com

cB4328资讯网——每日最新资讯28at.com

qpsB4328资讯网——每日最新资讯28at.com

平均响应时间(ms)B4328资讯网——每日最新资讯28at.com

CPUB4328资讯网——每日最新资讯28at.com

100B4328资讯网——每日最新资讯28at.com

1B4328资讯网——每日最新资讯28at.com

3.51B4328资讯网——每日最新资讯28at.com

284.876B4328资讯网——每日最新资讯28at.com

5%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

5B4328资讯网——每日最新资讯28at.com

17.23B4328资讯网——每日最新资讯28at.com

290.129B4328资讯网——每日最新资讯28at.com

21%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

10B4328资讯网——每日最新资讯28at.com

32.36B4328资讯网——每日最新资讯28at.com

309.057B4328资讯网——每日最新资讯28at.com

40%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

20B4328资讯网——每日最新资讯28at.com

52.94B4328资讯网——每日最新资讯28at.com

377.784B4328资讯网——每日最新资讯28at.com

82%B4328资讯网——每日最新资讯28at.com

5000B4328资讯网——每日最新资讯28at.com

40B4328资讯网——每日最新资讯28at.com

55.52B4328资讯网——每日最新资讯28at.com

720.433B4328资讯网——每日最新资讯28at.com

91%B4328资讯网——每日最新资讯28at.com

结论

  1. PHP-5.6升级PHP-7.0,Yii2框架的性能提升43%
  2. PHP-5.6升级PHP-7.0,某服务性能提升170%
  3. 单纯将业务升级PHP-7.0,能够提升很大的性能

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-93867-0.html为什么要推荐使用现代化PHP框架?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 有点东西,Template可以直接使用Setup语法糖中的变量原来是因为这个

下一篇: React Suspense 进阶用法,结合 useTransition 使用

标签:
  • 热门焦点
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 线程通讯的三种方法!通俗易懂

    线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 如何正确使用:Has和:Nth-Last-Child

    如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 从零到英雄:高并发与性能优化的神奇之旅

    从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • JVM优化:实战OutOfMemoryError异常

    JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 与兆芯合作  联想推出全新旗舰版笔记本电脑开天N7系列

    与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
Top
Baidu
map