PS:本文就是用於回答我朋友的問題【本文以渣男角度陳述】
重型:是指php 可執行文件運行後,會調用大量的文件操做函數【如open,read等】讀取大量的php文本文件【只不過老實人喜歡叫php源碼文件,而且老實人喜歡重型腳本稱爲框架】
【本文不按套路陳述用法也不講用法,不適合小白,本文只是傳達一個標題的概念】
本文的環境:linux+php+nginx 其它沒有了【本人是渣男,不會遵照任何官方相應條款】
【本文須要你看完以本身去架着轟炸機去測試php-fpm】
安裝流程
1 去這裏下載 【固然你老實本份就composer create-project laravel/laravel,我是渣男不老實,據說人家不喜歡老實人】 php
2 安裝 linux
它安裝時會讀取composer.json等文件去下載類庫文件,因此你若是安裝時遇到各類問題,能夠修改composer.json決定要裝什麼東西,人家說php版本必須是高版本才能裝laravel8【這通常是老實的人才會遵照的條款,我是渣男,確定不會遵照老外的條款】 nginx
3 而後瞎配置一下nginx[它會把數據發給php] laravel
4 啓動服務
nginx只是轉發請求給php-fpm處理而已,畢竟這是老傳統了,當你願意遵照這個傳統條款時。 面試
5 而後我先老實的訪問一下 json
6 以上是老實作法,下面咱們根據提示調整參數
這些配置參數不用記,記來幹什麼?用來面試別人?真是老實人。segmentfault
而後重啓服務 ,再來老實的訪問 app
而後出現這種,通常這種狀況老實人就比較緊張了,怕人家強暴同樣的緊張。咱們如今看一下php-fpm進程執行的狀況 composer
上面圖中我圈出的就是重點,你硬是看不懂,我沒有辦法了。 要不599找我手把手教你吧。^_^ 框架
接下來根據它的提示調整一下
咱們調整好之後,再訪問
這個時候你也別緊張兮兮,咱們看一下php-fpm運行laravel的狀況再說話,不要像怨婦同樣上來就是啊,怎麼辦?
咱們看到這php-fpm在運行laravel時,打開的腳本文件那是至關多,我這裏只是截圖部分,爲了處理一個小小的訪問,它打開一堆腳本文件,後面它直接去訪問500這個文件了。很不給面子。
7 接下來,咱們一步步的看一下我運行,php-fpm爲了處理這個重型框架到底加載了多少php腳本文件【部分截圖】【本身用電腦看,不要用小的可憐兮兮的手機看,渣男就應該用PC看】
路由註冊服務
Kernel 核心文件
好了,咱們不是要研究框架的運行機制,咱們如今先看一下500報錯頁面的加載
你們能夠看到,一個小小的業務需求,它就加載一大堆的【open,read,lstat,close文件,這些操做都是要去磁盤裏讀取,框架越重,php-fpm處理時間越長,固然了php-fpm自己是個守護進程,接收一次tcp鏈接和數據傳輸後,它就斷開了】在這裏你們能夠自行的進行測試,從框架的index.php到最後輸出,打開了N個文件,都是要操做磁盤,讀取的數據固然是要佔用內存,c會申請一堆內存再去處理這些腳本的語法,進行解析。
8 下面隨便給大家看下問題所在
看一下它寫的內容就知道問題在哪裏了
write(4, "[2021-01-29 10:47:15] production.ERROR: No application encryption key has been specified. {"exception":"[object] (I
這句話看不懂,那就比較老火了。
大家有興趣就去看一下它的加密註冊服務代碼
解決一下
我不老實,不按上面解決,按渣男方式解決
再訪問時
手動寫一個
下面測試一下
改爲這吊樣
請求過程
最後一把
//請求
路由註冊
控制器調度
響應
php-fpm和nginx運行時系統調用狀況【響應北風之神內容的分析】
【統計偏差很小,你們能夠自行統計】
1 系統調用時產生的記錄日誌大小
php-fpm運行時的系統調用產生:1.4M
ngninx:1.5M
open 打開php腳本文件次數
open 打開php腳本後read讀取腳本內容次數
read php腳本時大概讀取多少個字節
根據公式換算一下:
1M=1024KB
1KB=1024Byte
1M=1024*1024=1000,000
1362477=1330KB=1M
php-fpm響應給nginx字節數
nginx響應給用戶的字節數