PHP源碼研究

最近閒來無事,因此對PHP這門語言進行更深一層的瞭解,對源碼進行一番研究,是如何執行咱們寫的PHP腳本的。php

1.1.3 PHP的相關組成

1.1.3.1 SAPI

PHP自己能夠理解爲是一個庫函數,提供語言的編譯與執行服務,它有標準的輸入、輸出,而SAPI是PHP的接入層,它接收用戶的請求,而後調用PHP內核提供的一些接口完成PHP腳本的執行,因此嚴格意義上講SAPI並不算PHP內核的一部分。web

PHP的角色就比如是leveldb,它實現了基本存儲功能,可是沒有網絡處理模塊,而咱們基於leveldb實現的完整存儲服務就比如是SAPI。服務器

PHP中經常使用的SAPI有cli、php-fpm,cli是命令行下執行PHP腳本的實現:bin/php script.php,它是單進程的,處理模型比較簡單,而php-fpm相對比較複雜,它實現了網絡處理模塊,用於與web服務器交互。網絡

1.1.3.2 Zend引擎

Zend是PHP語言實現的最爲重要的部分,是PHP最基礎、最核心的部分,它的源碼在/Zend目錄下,PHP代碼從編譯到執行都是由Zend完成的,後面章節絕大部分的源碼分析都是針對Zend的。Zend總體由兩個部分組成:函數

編譯器: 負責將PHP代碼編譯爲抽象語法樹,而後進一步編譯爲可執行的opcodes,這個過程至關於GCC的工做,編譯器是一個語言實現的基礎
執行器: 負責執行編譯器輸出的opcodes,也就是執行PHP腳本中編寫的代碼邏輯php-fpm

2.相關文章

[[譯] 理解 PHP 內部函數的定義(給PHP開發者的PHP源碼-第二部分)][1]源碼分析

相關文章
相關標籤/搜索