首頁  >  文章  >  後端開發  >  PHP生命週期及fpm的運作方式

PHP生命週期及fpm的運作方式

藏色散人
藏色散人轉載
2019-12-31 17:22:164844瀏覽

PHP生命週期及fpm(FastCGI進程管理器)的運作方式

#PHP在web方式中如何改了檔案就立即生效的,重要的幾個概念:

● sapi: 可以簡單的理解為php引擎對外的一個統一接口,使得php可以和外部程序進行交互

● php的生命週期中關鍵四個呼叫: MINT -> RINT -> RSHUTDOWN -> MSHUTDOWN

● fpm: fastcgi進程管理器

fpm方式的流程就是:

fpm透過sapi介面與php進程互動

1.fpm啟動會呼叫各擴充的MINT方法,進行一些資料初始化(長駐記憶體)

2.每個請求過來,先會執行RINT對單一請求行一個初始化

3.執行php腳本(在沒有快取opcode的情況下,這裡的php腳本是動態執行的,所以更新php腳本後,會執行新的php腳本,詳情不在這裡敘述)

4.執行RSHUTDOWN方法

5.如果你要停止fpm了,才會執行MSHUTDOWN

fpm對每個請求的處理都是一直重複執行2~4步,在第三步中,php的腳本是動態執行的,因為每次都要執行一次php腳本,而每次php腳本都要有一個把php檔翻譯成opcode的流程(比較耗時), 於是就產生的opcache工具。

opcache

直接把php翻譯後的opcode程式碼樹儲存到共享記憶體中,以便直接使用,從而減少每次都把php翻譯成opcode的開銷。

opcache的問題: 依照他的描述,修改了php文件,並不能立即被更新。

opcache的解決方案: 有一個配置來設定隔多長時間檢測檔案是否更新了,從而有機會在第二步重新來reload相關的檔案。

當然,直接reload fpm,從而達到php熱更新的效果(opcache擴充可以在第四步驟把相關的opcode cache給清空)。

圖示

PHP生命週期及fpm的運作方式

更多PHP相關知識,請造訪PHP教學

以上是PHP生命週期及fpm的運作方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:lukachen.com。如有侵權,請聯絡admin@php.cn刪除