成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么要推薦使用現代化PHP框架?

開發 前端
純C擴展的PHP MVC框架由于研發難度大,不易修改,學習成本相對較高,故直到近幾年才出現,比如Yaf、Phalcon等。

概述

PHP語言從1995年發布,至今已經有29多年的歷史,在期間涌現了成千上萬的MVC框架,大致可以將其分為以下三大類:

公司內部自研

有大量的公司會自研MVC框架,會根據自身業務的特性打造適合自身的PHP框架。

PHP開源框架

現PHP開源社區流行的PHP MVC框架有Yii、Laravel、CodeIgniter、ZendFrameWork、Symfony等;

C擴展

純C擴展的PHP MVC框架由于研發難度大,不易修改,學習成本相對較高,故直到近幾年才出現,比如Yaf、Phalcon等。

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

隨著互聯網技術的發展,大量公司的后端技術架構都在往微服務架構變遷,微服務架構要求我們盡可能的將我們的業務拆分到獨立的部署單元,當然微服務框架的好處是很“誘人”的,但是它會帶來大量的成本開銷和性能開銷,如何在微服務架構實踐中節約成本和提升性能是我們不可邁過的溝壑。

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

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

我們是不是應該切換開發語言?

先簡單的來看換開發語言,一個公司或者團隊切換開發語言的成本是巨大的,它直接面臨著放棄已有的技術沉淀,學習新的語言生態和習慣做法,并將現有業務的全面重構,同時整個運維技術棧也要同步更新,需要踩過無數個“坑”,所以我們這里暫不展開去講切換開發語言來解決我們的核心問題。

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

我們分析我們的業務不難發現,90%以上的業務都是IO密集性業務,我們只需要提高IO復用的能力就可以提升單機吞吐能力,另外需要將php-fpm同步阻塞模式替換為異步非阻塞模式,當然不一定使用php-fpm,就可以解決我們的核心問題——性能。不幸的是目前PHP生態中還沒有一個工程級別的MVC框架能夠滿足我們的需求。

綜上所述,我們需要使用全新的現代化的PHP框架Webman,為微服務架構打下堅實的基礎。

PHP-FPM工作模式的問題

圖片圖片

  • 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/

硬件

aws c4.xlarge(4核8G)

Hello World

PHP-5.6/Yii2

開啟opcache,64個php-fpm進程,輸出hello world

n

c

qps

平均響應時間(ms)

CPU

10000

1

662.73

1.509

6%

50000

10

1435.35

6.967

76%

500000

20

1577.16

13.375

83%

500000

50

1626.09

145.953

89%

PHP-7/Yii2

開啟opcache,64個php-fpm進程,輸出hello world

n

c

qps

平均響應時間(ms)

CPU

10000

1

854.81

1.170

18%

50000

10

2008.32

4.979

62%

500000

20

2186.90

9.145

65%

500000

50

2304.98

21.692

69%

500000

200

2331.93

85.766

69%

某服務

  • 1次Redis Get
  • 1次 MongoDB Query
  • 2個廣告接口
  • 2個業務接口

PHP-5.6/Yii2

n

c

qps

平均響應時間(ms)

CPU

100

1

4.16

240.168

9%

5000

5

15.36

325.502

46%

5000

10

18.72

534.141

83%

5000

50

19.03

2627.159

99%

PHP-7/Yii2

n

c

qps

平均響應時間(ms)

CPU

100

1

3.51

284.876

5%

5000

5

17.23

290.129

21%

5000

10

32.36

309.057

40%

5000

20

52.94

377.784

82%

5000

40

55.52

720.433

91%

結論

  1. PHP-5.6升級PHP-7.0,Yii2框架的性能提升43%
  2. PHP-5.6升級PHP-7.0,某服務性能提升170%
  3. 單純將業務升級PHP-7.0,能夠提升很大的性能
責任編輯:武曉燕 來源: 開源技術小棧
相關推薦

2021-03-04 14:12:47

數據中心創新數字化轉型

2024-01-23 15:21:14

2018-04-09 11:10:04

PHP前端控制器自動加載

2022-07-26 06:57:07

數據管道端點API

2023-09-17 12:21:21

RemixNext.js

2023-08-18 10:03:32

云計算云遷移

2010-05-07 14:38:47

Unix KDE

2015-10-29 14:35:21

移動設備現代化

2022-07-11 05:34:19

云原生應用程序

2023-12-07 11:38:25

2023-08-31 10:04:02

Astro 3.0前端

2021-03-18 09:24:11

DrogonC++框架

2020-06-05 14:16:05

醫藥

2023-05-03 21:47:22

2012-09-26 10:02:44

框架開發項目

2020-05-08 14:47:53

網絡現代化網絡IT

2013-03-19 18:04:06

51CTO

2021-04-13 16:13:38

大數據教育科學

2021-07-09 05:25:48

CIO遺留系統現代化用戶體驗
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区视频 | 国产成人精品免高潮在线观看 | 国产精品a久久久久 | 91在线导航| 成人做爰www免费看视频网站 | 麻豆av网站 | 亚洲国产精品99久久久久久久久 | 中文字幕不卡视频在线观看 | 国产色 | 秋霞电影一区二区 | 黄色片网站在线观看 | 国产欧美在线 | 国产乱码精品一区二区三区忘忧草 | 欧美高清一级片 | 自拍视频一区二区三区 | 97久久精品午夜一区二区 | 国产精品中文字幕在线播放 | 91黄色免费看 | 成人免费精品视频 | 日韩精品一区二区三区在线观看 | 国产色| 三级高清 | 91精品国产综合久久久久久丝袜 | 日本午夜一区二区三区 | 91精品国产乱码久久久久久 | 国产成在线观看免费视频 | 一区二区中文字幕 | 国产福利在线看 | 岛国av一区二区三区 | 成人午夜黄色 | 成人在线黄色 | 日本一卡精品视频免费 | 国产一区二区三区在线视频 | 日韩高清在线 | 日韩一二三区 | 亚洲精品视频网站在线观看 | 免费的av网站 | 日韩第一区 | 一级a性色生活片久久毛片 一级特黄a大片 | 最新毛片网站 | 色频 |