<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ELF PHP 可執(zhí)行程序運行后加載重型腳本的過程

          共 1873字,需瀏覽 4分鐘

           ·

          2021-02-04 19:03

          本文作者:https://learnku.com/users/41667

          PS:本文就是用于回答我朋友的問題【本文以渣男角度陳述】
          重型:是指php 可執(zhí)行文件運行后,會調(diào)用大量的文件操作函數(shù)【如open,read等】讀取大量的php文本文件
          【本文不按套路陳述用法也不講用法,不適合小白,本文只是傳達一個標題的概念】
          本文的環(huán)境:linux+php+nginx 其它沒有了【本人是渣男,不會遵守任何官方相應(yīng)條款】
          【本文需要你看完以自己去架著轟炸機去測試php-fpm】
          安裝流程
          1 去這里下載 【當然你老實本份就composer create-project laravel/laravel,我是渣男不老實,聽說人家不喜歡老實人】


          2 安裝

          它安裝時會讀取composer.json等文件去下載類庫文件,所以你如果安裝時遇到各種問題,可以修改composer.json決定要裝什么東西,人家說php版本必須是高版本才能裝laravel8【這一般是老實的人才會遵守的條款,我是渣男,肯定不會遵守老外的條款】

          3 然后瞎配置一下nginx[它會把數(shù)據(jù)發(fā)給php]

          4 啟動服務(wù)
          nginx只是轉(zhuǎn)發(fā)請求給php-fpm處理而已,畢竟這是老傳統(tǒng)了,當你愿意遵守這個傳統(tǒng)條款時。

          5 然后我先老實的訪問一下


          6 以上是老實做法,下面我們根據(jù)提示調(diào)整參數(shù)
          這些配置參數(shù)不用記,記來干什么?用來面試別人?真是老實人。

          然后重啟服務(wù) ,再來老實的訪問

          然后出現(xiàn)這種,一般這種情況老實人就比較緊張了,怕人家強暴一樣的緊張。我們現(xiàn)在看一下php-fpm進程執(zhí)行的情況

          上面圖中我圈出的就是重點,你硬是看不懂,我沒有辦法了。要不599找我手把手教你吧。^_^

          接下來根據(jù)它的提示調(diào)整一下

          我們調(diào)整好以后,再訪問

          這個時候你也別緊張兮兮,我們看一下php-fpm運行l(wèi)aravel的情況再說話,不要像怨婦一樣上來就是啊,怎么辦?

          我們看到這php-fpm在運行l(wèi)aravel時,打開的腳本文件那是相當多,我這里只是截圖部分,為了處理一個小小的訪問,它打開一堆腳本文件,后面它直接去訪問500這個文件了。很不給面子。

          7 接下來,我們一步步的看一下我運行,php-fpm為了處理這個重型框架到底加載了多少php腳本文件【部分截圖】【自己用電腦看,不要用小的可憐兮兮的手機看,渣男就應(yīng)該用PC看】






          路由注冊服務(wù)

          Kernel 核心文件

          好了,我們不是要研究框架的運行機制,我們現(xiàn)在先看一下500報錯頁面的加載

          大家可以看到,一個小小的業(yè)務(wù)需求,它就加載一大堆的【open,read,lstat,close文件,這些操作都是要去磁盤里讀取,框架越重,php-fpm處理時間越長,當然了php-fpm本身是個守護進程,接收一次tcp連接和數(shù)據(jù)傳輸后,它就斷開了】在這里大家可以自行的進行測試,從框架的index.php到最后輸出,打開了N個文件,都是要操作磁盤,讀取的數(shù)據(jù)當然是要占用內(nèi)存,c會申請一堆內(nèi)存再去處理這些腳本的語法,進行解析。

          8 下面隨便給你們看下問題所在

          看一下它寫的內(nèi)容就知道問題在哪里了
          write(4, “[2021-01-29 10:47:15] production.ERROR: No application encryption key has been specified. {“exception”:”[object] (I
          這句話看不懂,那就比較老火了。
          你們有興趣就去看一下它的加密注冊服務(wù)代碼

          解決一下

          我不老實,不按上面解決,按渣男方式解決

          再訪問時

          手動寫一個

          下面測試一下


          改成這吊樣

          請求過程

          最后一把


          //請求

          路由注冊

          控制器調(diào)度

          響應(yīng)


          php-fpm和nginx運行時系統(tǒng)調(diào)用情況【響應(yīng)北風之神內(nèi)容的分析】
          【統(tǒng)計誤差很小,大家可以自行統(tǒng)計】
          1 系統(tǒng)調(diào)用時產(chǎn)生的記錄日志大小

          php-fpm運行時的系統(tǒng)調(diào)用產(chǎn)生:1.4M
          ngninx:1.5M

          open 打開php腳本文件次數(shù)

          open 打開php腳本后read讀取腳本內(nèi)容次數(shù)

          read php腳本時大概讀取多少個字節(jié)

          根據(jù)公式換算一下:
          1M=1024KB
          1KB=1024Byte
          1M=1024*1024=1000,000
          1362477=1330KB=1M

          php-fpm響應(yīng)給nginx字節(jié)數(shù)


          nginx響應(yīng)給用戶的字節(jié)數(shù)


          瀏覽 70
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲人成色77777在线观看 | 亚洲视频在线免费观看 | 日韩黄色视频毛片 | 豆花视频一区 | 亚洲一区在线无码 |