php之深入理解架構(gòu)布局講解
本文基于《PHP 內(nèi)核剖析》與 《PHP7底層設(shè)計(jì)與源碼實(shí)現(xiàn)》所記筆記。
對(duì)PHP內(nèi)核的深入理解有助于我們對(duì)PHP的整體認(rèn)識(shí),對(duì)于業(yè)務(wù)層初期發(fā)展我們可以只了解基本語(yǔ)言的邏輯就可以寫出符合業(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信息.
抽象語(yǔ)法樹主要將解釋器和編譯器進(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)的目錄.通過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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php下網(wǎng)站防IP攻擊代碼,超級(jí)實(shí)用
現(xiàn)在做外國(guó)網(wǎng)絡(luò),訪問量越來越高了,最近有很多不良IP不停的進(jìn)行攻擊,由于不是自己的主機(jī),所以,只能通過代碼去阻止它們。2010-10-10PHP實(shí)現(xiàn)預(yù)定義鉤子和自定義鉤子的簡(jiǎn)單示例
這篇文章主要給大家介紹了PHP實(shí)現(xiàn)預(yù)定義鉤子和自定義鉤子,在PHP中,鉤子(Hooks)是一種機(jī)制,允許開發(fā)人員在特定的時(shí)機(jī)插入自定義代碼,通過使用鉤子,開發(fā)人員可以在應(yīng)用程序的特定事件發(fā)生時(shí)執(zhí)行自定義的功能或邏輯,文中有詳細(xì)的代碼講解,需要的朋友可以參考下2023-11-11Highcharts?圖表中圖例顯示狀態(tài)存儲(chǔ)的功能設(shè)計(jì)詳解
這篇文章主要介紹了Highcharts?圖表中圖例顯示狀態(tài)存儲(chǔ)的功能設(shè)計(jì)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03php數(shù)組函數(shù)序列之rsort() - 對(duì)數(shù)組的元素值進(jìn)行降序排序
rsort() 函數(shù)對(duì)數(shù)組的元素按照鍵值進(jìn)行逆向排序。與 arsort() 的功能基本相同。注釋:該函數(shù)為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。2011-11-11