PS:本文就是用於回答我朋友的問題【本文以渣男角度陳述】
重型:是指php 可執行檔案執行後,會呼叫大量的檔案操作函式【如open,read等】讀取大量的php文字檔案
【本文不按套路陳述用法也不講用法,不適合小白,本文只是傳達一個標題的概念】
本文的環境:linux+php+nginx 其它沒有了【本人是渣男,不會遵守任何官方相應條款】
【本文需要你看完以自己去架著轟炸機去測試php-fpm】
安裝流程
1 去這裡下載 【當然你老實本份就composer create-project laravel/laravel,我是渣男不老實,聽說人家不喜歡老實人】
2 安裝
它安裝時會讀取composer.json等檔案去下載類庫檔案,所以你如果安裝時遇到各種問題,可以修改composer.json決定要裝什麼東西,人家說php版本必須是高版本才能裝laravel8【這一般是老實的人才會遵守的條款,我是渣男,肯定不會遵守老外的條款】
3 然後瞎配置一下nginx[它會把資料發給php]
4 啟動服務
nginx只是轉發請求給php-fpm處理而已,畢竟這是老傳統了,當你願意遵守這個傳統條款時。
5 然後我先老實的訪問一下
6 以上是老實做法,下面我們根據提示調整引數
這些配置引數不用記,記來幹什麼?用來面試別人?真是老實人。
然後重啟服務 ,再來老實的訪問
然後出現這種,一般這種情況老實人就比較緊張了,怕人家強暴一樣的緊張。我們現在看一下php-fpm程式執行的情況
上面圖中我圈出的就是重點,你硬是看不懂,我沒有辦法了。 要不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響應給使用者的位元組數
本作品採用《CC 協議》,轉載必須註明作者和本文連結