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

來源:互聯網
上載者:User

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。

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

       

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.