本文基于《PHP 內(nèi)核剖析》與 《PHP7底層設(shè)計(jì)與源碼實(shí)現(xiàn)》所記筆記。
對(duì)PHP內(nèi)核的深入理解有助于我們對(duì)PHP的整體認(rèn)識(shí),對(duì)于業(yè)務(wù)層初期發(fā)展我們可以只了解基本語(yǔ)言的邏輯就可以寫(xiě)出符合業(yè)務(wù)的代碼,但是隨著業(yè)務(wù)的發(fā)展我們通過(guò)分析源碼,編寫(xiě)擴(kuò)展,深入了解PHP內(nèi)部機(jī)制,幫助我們理解PHP內(nèi)部實(shí)現(xiàn)邏輯,更好助力業(yè)務(wù)發(fā)展.
執(zhí)行流程
從上圖中看出主要從解析PHPCode到執(zhí)行主要經(jīng)過(guò)了四個(gè)階段.
獲取token可以通過(guò)Token_get_all('?php echo "str";>')函數(shù)獲取token信息.
抽象語(yǔ)法樹(shù)主要將解釋器和編譯器進(jìn)行解耦.
opcodes最終執(zhí)行的指令,例如ZEND_ECHO:本質(zhì)還是一個(gè)對(duì)應(yīng)的C函數(shù).
架構(gòu)結(jié)構(gòu)
Zend層為上層的PHP層提供一些基礎(chǔ)的內(nèi)存管理以及數(shù)據(jù)結(jié)構(gòu)等.
SAPI層為最上層和Server進(jìn)行通信,封裝了不同的通信類型,cgi,fast-cgi,cli等.
目錄結(jié)構(gòu)
sapi
存放根據(jù)不同環(huán)境支持的上層API交互形式,實(shí)現(xiàn)了不同的輸入輸出形式.
Zend
存放PHP相關(guān)的核心代碼,如前所述內(nèi)存管理等.
main
負(fù)責(zé)與Zend層交互的入口,還有一些鉤子函數(shù).
ext
主要是擴(kuò)展相關(guān)的目錄.通過(guò)ext_skel命令生成自定的模塊.會(huì)默認(rèn)安裝到這個(gè)目錄.
TSRM
線程資源管理相關(guān)的目錄,一般只有和Apache結(jié)合使用時(shí)會(huì)涉及到線程資源管理相關(guān)的代碼.
與Nginx相關(guān)的一般只會(huì)用到FastCGI協(xié)議不涉及到TSRM模塊.
到此這篇關(guān)于php之深入理解架構(gòu)布局講解的文章就介紹到這了,更多相關(guān)php之深入理解架構(gòu)布局內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(三)
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(二)
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(一)
- PHP數(shù)據(jù)源架構(gòu)模式之表入口模式實(shí)例分析
- PHP架構(gòu)及原理知識(shí)點(diǎn)詳解
- thinkPHP5.0框架整體架構(gòu)總覽【應(yīng)用,模塊,MVC,驅(qū)動(dòng),行為,命名空間等】
- php代碼架構(gòu)的八點(diǎn)注意事項(xiàng)
- 四種php中webservice實(shí)現(xiàn)的簡(jiǎn)單架構(gòu)方法及實(shí)例