php之深入理解架構(gòu)布局講解
本文基于《PHP 內(nèi)核剖析》與 《PHP7底層設(shè)計(jì)與源碼實(shí)現(xiàn)》所記筆記。
對PHP內(nèi)核的深入理解有助于我們對PHP的整體認(rèn)識,對于業(yè)務(wù)層初期發(fā)展我們可以只了解基本語言的邏輯就可以寫出符合業(yè)務(wù)的代碼,但是隨著業(yè)務(wù)的發(fā)展我們通過分析源碼,編寫擴(kuò)展,深入了解PHP內(nèi)部機(jī)制,幫助我們理解PHP內(nèi)部實(shí)現(xiàn)邏輯,更好助力業(yè)務(wù)發(fā)展.
執(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模塊.
到此這篇關(guān)于php之深入理解架構(gòu)布局講解的文章就介紹到這了,更多相關(guān)php之深入理解架構(gòu)布局內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP手機(jī)號碼及郵箱正則表達(dá)式實(shí)例解析
這篇文章主要介紹了PHP手機(jī)號碼及郵箱正則表達(dá)式實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法
這篇文章主要介紹了PHP+MySQL高并發(fā)加鎖事務(wù)處理問題解決方法,結(jié)合實(shí)例形式分析了PHP+MySQL事務(wù)處理相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-04-04
批量獲取memcache值并按key的順序返回的實(shí)現(xiàn)代碼
一臺memcache時(shí)返回是正確的,在有多臺memcache時(shí)就無法一一對應(yīng)的按順序返回。2011-06-06
PHP中key和current,next的聯(lián)合運(yùn)用實(shí)例分析
這篇文章主要介紹了PHP中key和current,next的聯(lián)合運(yùn)用,結(jié)合實(shí)例形式分析了key和current,next操作數(shù)組元素的相關(guān)技巧,需要的朋友可以參考下2016-03-03
php+html優(yōu)化頁面顯示速度的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了php結(jié)合html優(yōu)化頁面顯示速度的一些常見方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12

