日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

為什么要推薦使用現(xiàn)代化PHP框架?

來源: 責編: 時間:2024-06-14 17:40:26 154觀看
導讀概述PHP語言從1995年發(fā)布,至今已經(jīng)有29多年的歷史,在期間涌現(xiàn)了成千上萬的MVC框架,大致可以將其分為以下三大類:公司內(nèi)部自研有大量的公司會自研MVC框架,會根據(jù)自身業(yè)務的特性打造適合自身的PHP框架。PHP開源框架現(xiàn)PHP開

概述

PHP語言從1995年發(fā)布,至今已經(jīng)有29多年的歷史,在期間涌現(xiàn)了成千上萬的MVC框架,大致可以將其分為以下三大類:lSH28資訊網(wǎng)——每日最新資訊28at.com

公司內(nèi)部自研

有大量的公司會自研MVC框架,會根據(jù)自身業(yè)務的特性打造適合自身的PHP框架。lSH28資訊網(wǎng)——每日最新資訊28at.com

PHP開源框架

現(xiàn)PHP開源社區(qū)流行的PHP MVC框架有Yii、Laravel、CodeIgniter、ZendFrameWork、Symfony等;lSH28資訊網(wǎng)——每日最新資訊28at.com

C擴展

純C擴展的PHP MVC框架由于研發(fā)難度大,不易修改,學習成本相對較高,故直到近幾年才出現(xiàn),比如Yaf、Phalcon等。lSH28資訊網(wǎng)——每日最新資訊28at.com

上述三類的PHP MVC運行的環(huán)境為LA(N)MP,而且其中的A(N)是不可或缺的,也就是說他們都需要依賴Web Server來承接用戶的請求,將請求轉(zhuǎn)發(fā)給PHP進程,解析并執(zhí)行PHP代碼,而這樣的工作模式是所有PHPer根深蒂固的認知,甚至筆者在前幾年聽到有人說我們可以拋棄php-fpm,nginx,心想簡直是無稽之談。lSH28資訊網(wǎng)——每日最新資訊28at.com

隨著互聯(lián)網(wǎng)技術的發(fā)展,大量公司的后端技術架構都在往微服務架構變遷,微服務架構要求我們盡可能的將我們的業(yè)務拆分到獨立的部署單元,當然微服務框架的好處是很“誘人”的,但是它會帶來大量的成本開銷和性能開銷,如何在微服務架構實踐中節(jié)約成本和提升性能是我們不可邁過的溝壑。lSH28資訊網(wǎng)——每日最新資訊28at.com

那在PHP生態(tài)中傳統(tǒng)的LA(N)MP能滿足微服務框架的需求嗎?

答案顯然是不能的。就目前PHP的fastcgi進程管理器php-fpm和nginx的配合已經(jīng)運行得足夠好,但是由于php-fpm本身是同步阻塞進程模型,在請求結束后釋放所有的資源(包括框架初始化創(chuàng)建的一系列對象),導致PHP進程空轉(zhuǎn)(創(chuàng)建銷毀創(chuàng)建) 消耗大量的CPU資源,從而導致單機的吞吐能力有限。lSH28資訊網(wǎng)——每日最新資訊28at.com

我們是不是應該切換開發(fā)語言?

先簡單的來看換開發(fā)語言,一個公司或者團隊切換開發(fā)語言的成本是巨大的,它直接面臨著放棄已有的技術沉淀,學習新的語言生態(tài)和習慣做法,并將現(xiàn)有業(yè)務的全面重構,同時整個運維技術棧也要同步更新,需要踩過無數(shù)個“坑”,所以我們這里暫不展開去講切換開發(fā)語言來解決我們的核心問題。lSH28資訊網(wǎng)——每日最新資訊28at.com

那我們還有什么解決方案?

我們分析我們的業(yè)務不難發(fā)現(xiàn),90%以上的業(yè)務都是IO密集性業(yè)務,我們只需要提高IO復用的能力就可以提升單機吞吐能力,另外需要將php-fpm同步阻塞模式替換為異步非阻塞模式,當然不一定使用php-fpm,就可以解決我們的核心問題——性能。不幸的是目前PHP生態(tài)中還沒有一個工程級別的MVC框架能夠滿足我們的需求。lSH28資訊網(wǎng)——每日最新資訊28at.com

綜上所述,我們需要使用全新的現(xiàn)代化的PHP框架Webman,為微服務架構打下堅實的基礎。lSH28資訊網(wǎng)——每日最新資訊28at.com

PHP-FPM工作模式的問題

圖片圖片lSH28資訊網(wǎng)——每日最新資訊28at.com

lSH28資訊網(wǎng)——每日最新資訊28at.com

  • Nginx基于epoll事件模型,一個worker同時可處理多個請求
  • fpm-worker在同一時刻可處理一個請求
  • master進程只負責處理worker進程的監(jiān)控、日志等
  • 用戶端請求由elb解析,再經(jīng)過nginx解析
  • fpm-worker每次處理請求前需要重新初始化mvc框架,然后再釋放資源
  • 高并發(fā)請求時,fpm-worker不夠用,nginx直接響應502
  • fpm-worker進程間切換消耗大(如某線上業(yè)務在4核8G內(nèi)存服務器實質(zhì)可利用16個進程)

壓測數(shù)據(jù)對比

目標

  1. 對比在相同硬件條件下,PHP Yii2框架在PHP-5.6及PHP7下echo hello world的QPS,并觀察平均響應時間及CPU。
  2. 對比現(xiàn)有某服務在PHP-5.6及PHP7下的QPS

工具

ApacheBench即ab。ab -n xx -c xx -k http://www.tinywan.com/lSH28資訊網(wǎng)——每日最新資訊28at.com

硬件

aws c4.xlarge(4核8G)lSH28資訊網(wǎng)——每日最新資訊28at.com

Hello World

PHP-5.6/Yii2

開啟opcache,64個php-fpm進程,輸出hello worldlSH28資訊網(wǎng)——每日最新資訊28at.com

nlSH28資訊網(wǎng)——每日最新資訊28at.com

clSH28資訊網(wǎng)——每日最新資訊28at.com

qpslSH28資訊網(wǎng)——每日最新資訊28at.com

平均響應時間(ms)lSH28資訊網(wǎng)——每日最新資訊28at.com

CPUlSH28資訊網(wǎng)——每日最新資訊28at.com

10000lSH28資訊網(wǎng)——每日最新資訊28at.com

1lSH28資訊網(wǎng)——每日最新資訊28at.com

662.73lSH28資訊網(wǎng)——每日最新資訊28at.com

1.509lSH28資訊網(wǎng)——每日最新資訊28at.com

6%lSH28資訊網(wǎng)——每日最新資訊28at.com

50000lSH28資訊網(wǎng)——每日最新資訊28at.com

10lSH28資訊網(wǎng)——每日最新資訊28at.com

1435.35lSH28資訊網(wǎng)——每日最新資訊28at.com

6.967lSH28資訊網(wǎng)——每日最新資訊28at.com

76%lSH28資訊網(wǎng)——每日最新資訊28at.com

500000lSH28資訊網(wǎng)——每日最新資訊28at.com

20lSH28資訊網(wǎng)——每日最新資訊28at.com

1577.16lSH28資訊網(wǎng)——每日最新資訊28at.com

13.375lSH28資訊網(wǎng)——每日最新資訊28at.com

83%lSH28資訊網(wǎng)——每日最新資訊28at.com

500000lSH28資訊網(wǎng)——每日最新資訊28at.com

50lSH28資訊網(wǎng)——每日最新資訊28at.com

1626.09lSH28資訊網(wǎng)——每日最新資訊28at.com

145.953lSH28資訊網(wǎng)——每日最新資訊28at.com

89%lSH28資訊網(wǎng)——每日最新資訊28at.com

PHP-7/Yii2

開啟opcache,64個php-fpm進程,輸出hello worldlSH28資訊網(wǎng)——每日最新資訊28at.com

nlSH28資訊網(wǎng)——每日最新資訊28at.com

clSH28資訊網(wǎng)——每日最新資訊28at.com

qpslSH28資訊網(wǎng)——每日最新資訊28at.com

平均響應時間(ms)lSH28資訊網(wǎng)——每日最新資訊28at.com

CPUlSH28資訊網(wǎng)——每日最新資訊28at.com

10000lSH28資訊網(wǎng)——每日最新資訊28at.com

1lSH28資訊網(wǎng)——每日最新資訊28at.com

854.81lSH28資訊網(wǎng)——每日最新資訊28at.com

1.170lSH28資訊網(wǎng)——每日最新資訊28at.com

18%lSH28資訊網(wǎng)——每日最新資訊28at.com

50000lSH28資訊網(wǎng)——每日最新資訊28at.com

10lSH28資訊網(wǎng)——每日最新資訊28at.com

2008.32lSH28資訊網(wǎng)——每日最新資訊28at.com

4.979lSH28資訊網(wǎng)——每日最新資訊28at.com

62%lSH28資訊網(wǎng)——每日最新資訊28at.com

500000lSH28資訊網(wǎng)——每日最新資訊28at.com

20lSH28資訊網(wǎng)——每日最新資訊28at.com

2186.90lSH28資訊網(wǎng)——每日最新資訊28at.com

9.145lSH28資訊網(wǎng)——每日最新資訊28at.com

65%lSH28資訊網(wǎng)——每日最新資訊28at.com

500000lSH28資訊網(wǎng)——每日最新資訊28at.com

50lSH28資訊網(wǎng)——每日最新資訊28at.com

2304.98lSH28資訊網(wǎng)——每日最新資訊28at.com

21.692lSH28資訊網(wǎng)——每日最新資訊28at.com

69%lSH28資訊網(wǎng)——每日最新資訊28at.com

500000lSH28資訊網(wǎng)——每日最新資訊28at.com

200lSH28資訊網(wǎng)——每日最新資訊28at.com

2331.93lSH28資訊網(wǎng)——每日最新資訊28at.com

85.766lSH28資訊網(wǎng)——每日最新資訊28at.com

69%lSH28資訊網(wǎng)——每日最新資訊28at.com

某服務

  • 1次Redis Get
  • 1次 MongoDB Query
  • 2個廣告接口
  • 2個業(yè)務接口

PHP-5.6/Yii2

nlSH28資訊網(wǎng)——每日最新資訊28at.com

clSH28資訊網(wǎng)——每日最新資訊28at.com

qpslSH28資訊網(wǎng)——每日最新資訊28at.com

平均響應時間(ms)lSH28資訊網(wǎng)——每日最新資訊28at.com

CPUlSH28資訊網(wǎng)——每日最新資訊28at.com

100lSH28資訊網(wǎng)——每日最新資訊28at.com

1lSH28資訊網(wǎng)——每日最新資訊28at.com

4.16lSH28資訊網(wǎng)——每日最新資訊28at.com

240.168lSH28資訊網(wǎng)——每日最新資訊28at.com

9%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

5lSH28資訊網(wǎng)——每日最新資訊28at.com

15.36lSH28資訊網(wǎng)——每日最新資訊28at.com

325.502lSH28資訊網(wǎng)——每日最新資訊28at.com

46%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

10lSH28資訊網(wǎng)——每日最新資訊28at.com

18.72lSH28資訊網(wǎng)——每日最新資訊28at.com

534.141lSH28資訊網(wǎng)——每日最新資訊28at.com

83%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

50lSH28資訊網(wǎng)——每日最新資訊28at.com

19.03lSH28資訊網(wǎng)——每日最新資訊28at.com

2627.159lSH28資訊網(wǎng)——每日最新資訊28at.com

99%lSH28資訊網(wǎng)——每日最新資訊28at.com

PHP-7/Yii2

nlSH28資訊網(wǎng)——每日最新資訊28at.com

clSH28資訊網(wǎng)——每日最新資訊28at.com

qpslSH28資訊網(wǎng)——每日最新資訊28at.com

平均響應時間(ms)lSH28資訊網(wǎng)——每日最新資訊28at.com

CPUlSH28資訊網(wǎng)——每日最新資訊28at.com

100lSH28資訊網(wǎng)——每日最新資訊28at.com

1lSH28資訊網(wǎng)——每日最新資訊28at.com

3.51lSH28資訊網(wǎng)——每日最新資訊28at.com

284.876lSH28資訊網(wǎng)——每日最新資訊28at.com

5%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

5lSH28資訊網(wǎng)——每日最新資訊28at.com

17.23lSH28資訊網(wǎng)——每日最新資訊28at.com

290.129lSH28資訊網(wǎng)——每日最新資訊28at.com

21%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

10lSH28資訊網(wǎng)——每日最新資訊28at.com

32.36lSH28資訊網(wǎng)——每日最新資訊28at.com

309.057lSH28資訊網(wǎng)——每日最新資訊28at.com

40%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

20lSH28資訊網(wǎng)——每日最新資訊28at.com

52.94lSH28資訊網(wǎng)——每日最新資訊28at.com

377.784lSH28資訊網(wǎng)——每日最新資訊28at.com

82%lSH28資訊網(wǎng)——每日最新資訊28at.com

5000lSH28資訊網(wǎng)——每日最新資訊28at.com

40lSH28資訊網(wǎng)——每日最新資訊28at.com

55.52lSH28資訊網(wǎng)——每日最新資訊28at.com

720.433lSH28資訊網(wǎng)——每日最新資訊28at.com

91%lSH28資訊網(wǎng)——每日最新資訊28at.com

結論

  1. PHP-5.6升級PHP-7.0,Yii2框架的性能提升43%
  2. PHP-5.6升級PHP-7.0,某服務性能提升170%
  3. 單純將業(yè)務升級PHP-7.0,能夠提升很大的性能

本文鏈接:http://www.www897cc.com/showinfo-26-93867-0.html為什么要推薦使用現(xiàn)代化PHP框架?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 有點東西,Template可以直接使用Setup語法糖中的變量原來是因為這個

下一篇: React Suspense 進階用法,結合 useTransition 使用

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 遂溪县| 德阳市| 胶州市| 阿图什市| 焦作市| 永福县| 鲁山县| 河南省| 无锡市| 安顺市| 卢龙县| 威信县| 安丘市| 弥渡县| 北票市| 郸城县| 吴忠市| 密云县| 文登市| 河南省| 梁平县| 沐川县| 拉萨市| 湖南省| 德钦县| 西平县| 安溪县| 仪征市| 南昌县| 凤台县| 灌南县| 柳林县| 河东区| 新安县| 临夏县| 福州市| 清水县| 平潭县| 武胜县| 华宁县| 安图县|