官术网_书友最值得收藏!

2.2 PHP 7內核架構

經過上一節對PHP代碼執行原理的簡介,我們大概清楚了PHP 7執行脈絡的各個主要部分的基本工作是什么,但是各個部分的輸入/輸出是如何串聯的呢?

這就是接下來要介紹的重要角色——Zend引擎(Zend Engine),也就是前文提到的引擎。Zend引擎中包含了編譯器和解釋器,從PHP代碼到opcode的執行,均由Zend引擎完成。

Zend引擎除了實現了PHP的核心功能,還提供了一套接口,讓PHP可以在更多的場景中使用,如命令行環境、Web環境等。

我們通過圖2-4,試圖描述以Zend引擎為核心的組織架構。

圖2-4 PHP7源碼架構

該架構圖大致分為四大部分。

1)Zend引擎:前文介紹的詞法/語法分析、AST編譯和opcodes的執行均在Zend引擎中實現。此外,PHP的變量設計、內存管理、進程管理等也在引擎層實現。引擎為PHP提供了基礎服務,PHP的可靠性和高性能都依賴引擎的基礎支撐。同時,Zend引擎的可擴展性,還是PHP得以大規模應用的重要原因之一。

2)PHP層:Zend引擎為PHP提供基礎能力(如內存分配和回收),而來自外部的交互則需要通過PHP層來處理。

3)SAPI:SAPI是Server API的縮寫,其中包含了常見的cli SAPI和fpm SAPI。PHP定義好輸入/輸出規范,依據此規范與PHP交互的一方都可以稱為Server。這樣做的好處便是Server方可以忽略PHP的內部實現,只要遵守定義好的SAPI協議,便可完成交互,極大豐富了PHP可以支持的Server類型。

4)擴展部分:Zend引擎提供了核心能力和接口規范。在此基礎上開發的擴展,為PHP代碼的性能和功能的多樣性提供了更豐富的選項。

本書的后續章節基本上也是按照這里的組織結構,細分展開。

主站蜘蛛池模板: 福清市| 许昌市| 平谷区| 兴宁市| 凤翔县| 张掖市| 正镶白旗| 长岭县| 池州市| 鹤岗市| 高台县| 合山市| 上蔡县| 民丰县| 惠水县| 芦山县| 漯河市| 府谷县| 东莞市| 洛阳市| 桦甸市| 修水县| 保康县| 延庆县| 马鞍山市| 永善县| 平阳县| 桃园县| 白河县| 东城区| 桐城市| 宜黄县| 广东省| 扎赉特旗| 漯河市| 文水县| 浦北县| 建昌县| 大田县| 枣庄市| 铜陵市|