PHP深入理解 PHP架構布局

2021-10-16 13:09:09 字數 757 閱讀 5279

解析為token

將語法轉換為抽象語法樹

將語法樹轉換opcodes

scanning

parsing

compilation

excution:執行opcodes

從上圖中看出主要從解析phpcode到執行主要經過了四個階段.

獲取token可以通過token_get_all('<?php echo "str";>')函式獲取token資訊.

抽象語法樹主要將直譯器和編譯器進行解耦.

opcodes最終執行的指令,例如zend_echo:本質還是乙個對應的c函式.

zend層為上層的php層提供一些基礎的記憶體管理以及資料結構等.

sapi層為最上層和server進行通訊,封裝了不同的通訊型別,cgi,fast-cgi,cli等.

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

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

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

主要是擴充套件相關的目錄.通過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資訊...