PHP底層工作原理 [轉]
PHP底層工作原理
圖(1) php結構
從圖上可以看出,php從下到上是一個4層體系
①Zend引擎
Zend整體用純c實現,是php的核心部分,它將php程式碼翻譯(詞法、語法解析等一系列編譯過程)為可執行opcode的處理並實現相應的處理方法、實現了基本的資料結構(如hashtable、oo)、記憶體分配及管理、提供了相應的api方法供外部呼叫,是一切的核心,所有的外圍功能均圍繞zend實現。
②Extensions
圍繞著zend引擎,extensions通過元件式的方式提供各種基礎服務,我們常見的各種內建函式(如array系列)、標準庫等都是通過extension來實現,使用者也可以根據需要實現自己的extension以達到功能擴充套件、效能優化等目的(如貼吧正在使用的php中間層、富文字解析就是extension的典型應用)。
③Sapi
Sapi全稱是Server Application Programming Interface,也就是服務端應用程式設計介面,sapi通過一系列鉤子函式,使得php可以和外圍互動資料,這是php非常優雅和成功的一個設計,通過sapi成功的將php本身和上層應用解耦隔離,php可以不再考慮如何針對不同應用進行相容,而應用本身也可以針對自己的特點實現不同的處理方式。後面將在sapi章節中介紹
④上層應用
這就是我們平時編寫的php程式,通過不同的sapi方式得到各種各樣的應用模式,如通過webserver實現web應用、在命令列下以指令碼方式執行等等。
構架思想:
引擎(Zend)+元件(ext)的模式降低內部耦合
中間層(sapi)隔絕web server和php
**************************************************************************
如果php是一輛車,那麼
車的框架就是php本身
Zend是車的引擎(發動機)
Ext下面的各種元件就是車的輪子
Sapi可以看做是公路,車可以跑在不同型別的公路上
而一次php程式的執行就是汽車跑在公路上。
因此,我們需要:效能優異的引擎+合適的車輪+正確的跑道