【php學習筆記】Php 體系結構及其執行概述

Php 體系結構及其執行概述:


php採用的是典型的模塊化,分層的思想。方便擴展和維護。 從上到下一次爲:

一、sapi
       Server Application Programming Interface (sapi)服務端應用編程端口.

       看似很高深的概念,其實說白了就是這樣一個東西,服務器程序(例如:apache,ngnix)和外圍程序定義了一個約定,說咱們提供幾個函數,他們的函數名稱是xxx 參數是xxx 然後我們之間就可以正常調用(例如php,例如asp或者一些服務器的插件)。例如如果是在linux下與apache通訊 則就是調用的apache_2.x.so
 
二、php 擴展組件
    爲php提供擴展功能的一些組件,例如我們常用的mysql驅動,加密加密解密組建 。這些組件爲php提供了一些擴展功能。在php中我們可以通過函數調用的形式調用他們。

三、php層
       負責與sapi層交互控制整個php運行的流程。其實也就是說調用擴展和zend核心。同時也包括文件處理等一些php核心部分。

四、zend引擎
       php的核心實現,實現php的編譯過程(詞法分析,語法分析,語義分析等) 生成opcode, 執行opcode。其實就是個編譯器加虛擬機。


Php的執行分兩種情況,一種命令行執行方式,一種php網頁執行方式


 命令行執行時候:
      首先會初始化一些環境,包括加載配置文件,加載擴展組件等。其次調用zend核心引擎生成opcode。然後執行此opcode,執行過程中如果遇到調用擴展函數,則調用相應的擴展組件入口函數。
最後執行完畢,清理現場,包括釋放內存等。

網頁的執行:(以apache爲例)

      有兩種模式這是通過apache來配置的。一種是module模式。此模式中,當apache啓動時候,會加載一個php模塊,創建php處理進程,等待請求。當apache收到一個請求php頁面的請求時候(這裏是指最終定位的資源是php文件,對於採取了url重寫你請求的可能是.html但是最終執行的卻是.php文件也算在內)則會調用php進程去處理,其處理流程和命令行下相同,處理完畢則返回輸出結果給apache,apache負責向客戶端返回http應答。
      
      一種模式是cgi模式。cgi模式不預先加載php模塊,而是每次請求則產生一個php進程。通過消息發送給php進程處理,處理完畢後返回給apapche。



這個是小弟的學習筆記:可能理解上會有很多錯誤,乞求各位看客幫助指正,以求進步。


       

發佈了22 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章