摘要:作為語言的核心,存在于源碼目錄中的子目錄。年,和決定重寫代碼以解決這兩個問題。最終他倆把該項技術的核心引擎命名為,的意思即為。語法分析語法檢查。執行引擎執行這些。核心核心由兩部分組成和。
Zend Engine
作為 PHP 語言的核心, Zend Engine 存在于 PHP 源碼目錄中的 Zend 子目錄。
Why Zend Engine ?
PHP3 采用的是邊解釋、邊執行的運行方式,運行效率很差。
代碼整體耦合度比較高,可擴展性也不夠好。
1997年,Zeev Suraski 和 Andi Gutmans 決定重寫代碼以解決這兩個問題。
最終他倆把該項技術的核心引擎命名為 Zend Engine,Zend 的意思即為 Zeev + Andi。
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20797.html
摘要:項目介紹是一個全新的語言的運行時環境,基于目前最新的進行打造,支持最新的語言規范,同時提供了自己的運行時標準庫。同樣也在的基礎上進行打造,實現了一個除開發之外的一個全新的運行環境。發布核心虛擬機的鏡像。整合運行時框架。 showImg(https://segmentfault.com/img/bVbnQXK); polarphp 項目介紹 polarphp是一個全新的PHP語言的運行時...
摘要:從而讓的擴展開發成為一種享受,不用在考慮不同版本帶來的差異性,讓開發者專注于自身的業務邏輯。怎么參與交流下面是我們項目的線上交流群和微信的二維碼,大家可以掃碼加入技術圈歡迎大家在這兩個平臺上與我們進行互動特別感謝無線電安全研究部獨角獸團隊 360開源項目介紹: 360開源官方github: https://github.com/qihoo360 今天給大家介紹一個360最新開源的產...
摘要:項目是什么是對的接口使用的最新標準進行而面向對象的封裝,從而屏蔽了底層的接口復雜性,加快開發擴展的效率。國內同類型的項目推薦目前國內有一個跟比較類似的項目,這個項目是項目作者開發,值得推薦。項目名字項目的地址是大家有興趣可以研究。 項目Logo showImg(https://segmentfault.com/img/bVVtW8?w=716&h=218); zendAPI 是什么? ...
摘要:如果內核這方面如果做得好的話,估計也沒有我們這個項目了。規范化版本號與版本發布流程,針對主流平臺進行測試,提供相應的二進制包等等。 因為時間有限,開發在每天的上午6點到9點,晚上9點到12點以及周末,所以項目周期可能比正常的要長一點,我的計劃如下: 7月到8月完成對 zend engine 的一些核心數據庫的封裝 這個階段主要針對 zend engine 一些常用的數據接口做一些面向對...
閱讀 2848·2023-04-25 18:58
閱讀 981·2021-11-25 09:43
閱讀 1215·2021-10-25 09:46
閱讀 3501·2021-09-09 11:40
閱讀 1691·2021-08-05 09:59
閱讀 874·2019-08-29 15:07
閱讀 963·2019-08-29 12:48
閱讀 704·2019-08-29 11:19