本篇文章給大家介紹一下PHP架構(gòu)布局。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對大家有所幫助。
執(zhí)行流程
從上圖中看出主要從解析PHPCode到執(zhí)行主要經(jīng)過了四個(gè)階段。
獲取token可以通過Token_get_all('<?php echo "str";>')
函數(shù)獲取token信息.
抽象語法樹主要將解釋器和編譯器進(jìn)行解耦.
opcodes最終執(zhí)行的指令,例如ZEND_ECHO:本質(zhì)還是一個(gè)對應(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)的目錄.通過ext_skel
命令生成自定的模塊.會(huì)默認(rèn)安裝到這個(gè)目錄.
TSRM
線程資源管理相關(guān)的目錄,一般只有和Apache結(jié)合使用時(shí)會(huì)涉及到線程資源管理相關(guān)的代碼.
與Nginx相關(guān)的一般只會(huì)用到FastCGI協(xié)議不涉及到TSRM模塊.
推薦學(xué)習(xí):php視頻教程