Zend Engine
Zend 引擎是 PHP 實作的核心,提供了語言實作上的基礎架構。作為 PHP 語言的核心, Zend Engine 存在於 PHP 原始碼目錄中的 Zend 子目錄。
Why Zend Engine ?
·PHP3 採用的是邊解、邊執行的運作方式,運作效率很差。
·程式碼整體耦合度比較高,可擴充性也不夠好。
1997年,Zeev Suraski 和 Andi Gutmans 決定重寫程式碼以解決這兩個問題。
最終他兩位將這項技術的核心引擎命名為 Zend Engine,Zend 的意思是 Zeev Andi。
相關推薦:《php基礎教學》
Zend Engine 功能
先進行預編譯( Compile ),然後再執行( Execute )。
·詞法分析(Lexer):將程式碼切分為一個個的標記Toekn。
·語法分析(Parser):語法檢查。
·產生操作碼(opcode):Zend 引擎對這些 Token 進行編譯, 將程式碼編譯為 opcode,並綁定對應的參數、和函數呼叫。
·執行(execute):Zend 引擎執行這些 opcode。
·記憶體管理
詳細流程如下圖所示:
PHP原始碼目錄結構
/ :主要包含一些说明文件以及设计方案。 Zend :Zend 引擎的实现目录。包括词法语法解析,OPCODE,提供语言运行环境。 TSRM :线程安全资源管理器。 build:放置一些和源码编译相关的一些文件。 ext :官方扩展目录。包括array系列,pdo系列,spl系列等函数的实现。 main :最为核心的文件,实现PHP的基本设施。 pear :PHP 扩展与应用仓库。 sapi :各种服务器抽象层的代码。例如apache的mod_php,cgi,fastcgi以及fpm等等接口。 tests:PHP的测试脚本集合。 scripts:Linux 下的脚本目录。 win32:Windows平台相关的一些实现。
PHP 核心
PHP 核心由兩部分組成:Zend Engine 和PHP Core。
PHP Core 綁定了 SAPI 層,PHP 對與上層 "伺服器" 的通訊進行了抽象,把所有的邏輯都抽象化、封裝到了SAPI。
對於上層的伺服器來說,它們對 PHP 的呼叫就可以透過 SAPI 來進行,實現了"解耦和"。
常見的呼叫 SAPI 方式有:
·mod_php5:PHP module for Apache。
·CGI:Fork-And-Execute。
·Fastcgi:常駐 (Long-Live) 型的 CGI。
·CLI:PHP 命令列模式。
The Architecture of PHP
以上是php基於什麼引擎的詳細內容。更多資訊請關注PHP中文網其他相關文章!