php之深入理解架構布局講解

2022-09-25 07:03:12 字數 720 閱讀 4496

本文基於《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,cl等.

存放根據www.cppcns.com不同環境支援的上層api互動形式,實現了不同的輸入輸出形式.

存放php相關的核心**,如前所述記憶體管理等.

負責與zpxknetend層互動的入口,還有一些鉤子函式.

主要是擴充套件相關的目錄.通過ext_skel命令生成自定的模組.會預設安裝到這個目錄.

執行緒資源管理相關的目錄,一般只有和apache結合使用時會涉及到執行緒資源管理相關的**.

與nginx相關的一般只會用到fastcgi協議不涉及到tsrm模組.

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...