php之深入理解架構佈局講解
本文基於《PHP 內核剖析》與 《PHP7底層設計與源碼實現》所記筆記。
對PHP內核的深入理解有助於我們對PHP的整體認識,對於業務層初期發展我們可以隻瞭解基本語言的邏輯就可以寫出符合業務的代碼,但是隨著業務的發展我們通過分析源碼,編寫擴展,深入瞭解PHP內部機制,幫助我們理解PHP內部實現邏輯,更好助力業務發展.
執行流程
從上圖中看出主要從解析PHPCode到執行主要經過瞭四個階段.
獲取token可以通過Token_get_all(‘<?php echo “str”;>’)函數獲取token信息.
抽象語法樹主要將解釋器和編譯器進行解耦.
opcodes最終執行的指令,例如ZEND_ECHO:本質還是一個對應的C函數.
架構結構
Zend層為上層的PHP層提供一些基礎的內存管理以及數據結構等.
SAPI層為最上層和Server進行通信,封裝瞭不同的通信類型,cgi,fast-cgi,cli等.
目錄結構
sapi
存放根據不同環境支持的上層API交互形式,實現瞭不同的輸入輸出形式.
Zend
存放PHP相關的核心代碼,如前所述內存管理等.
main
負責與Zend層交互的入口,還有一些鉤子函數.
ext
主要是擴展相關的目錄.通過ext_skel命令生成自定的模塊.會默認安裝到這個目錄.
TSRM
線程資源管理相關的目錄,一般隻有和Apache結合使用時會涉及到線程資源管理相關的代碼.
與Nginx相關的一般隻會用到FastCGI協議不涉及到TSRM模塊.
到此這篇關於php之深入理解架構佈局講解的文章就介紹到這瞭,更多相關php之深入理解架構佈局內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Nginx 502 bad gateway錯誤解決的九種方案及原因
- Docker部署nginx+php環境的全過程(簡單可用!)
- Mac M1 Nginx 配置多站點的實現
- 為什麼 Nginx 比 Apache 更牛逼
- php命令行模式代碼實例詳解