溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP fpm的工作流程

發(fā)布時間:2020-05-23 14:59:14 來源:億速云 閱讀:339 作者:鴿子 欄目:編程語言

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

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

● php的生命周期中關(guān)鍵四個調(diào)用: MINT -> RINT -> RSHUTDOWN -> MSHUTDOWN

● fpm: fastcgi進程管理器

fpm方式的流程就是:

fpm通過sapi接口與php進程交互

1.fpm啟動會調(diào)用各擴展的MINT方法,進行一些數(shù)據(jù)初始化(長駐內(nèi)存)

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

3.執(zhí)行php腳本(在沒有緩存opcode的情況下,這里的php腳本是動態(tài)執(zhí)行的,所以更新php腳本后,會執(zhí)行新的php腳本,詳情不在這里敘述)

4.執(zhí)行RSHUTDOWN方法

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

fpm對每個請求的處理都是一直在在重復(fù)執(zhí)行 2~4步,在第三步中,php的腳本是動態(tài)執(zhí)行的,由于每次都要執(zhí)行一次php腳本,而每次php腳本都要有一個把php文件翻譯成opcode的流程(比較耗時), 于是就產(chǎn)生的opcache工具。

opcache

直接把php翻譯后的opcode代碼樹保存到共享內(nèi)存中,以便直接使用,從而減少每次都把php翻譯成opcode的開銷。

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

opcache的解決方案: 有一個配置來設(shè)置隔多長時間檢測文件是否更新了,從而有機會在第二步重新來reload相關(guān)的文件。

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

圖示

PHP fpm的工作流程

以上就是PHP生命周期及fpm的運作方式的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI