PHP的生命週期詳解

來源:互聯網
上載者:User

SAPI

SAPI(Server Application Programming Interfac) is an application programming interface (API) provided by the web server to help other developers in extending the web server capabilities.

SAPI是一個用來協助其他開發程式擴充web伺服器功能的應用程式介面(api)。它將外部條件抽象, 為內部的PHP提供一套固定統一的介面, 使得PHP自身實現能夠不受外部環境影響,保持一定的獨立性。
PHP中常用的SAPI有cli(命令列模式,單進程)、php-fpm、CGI、Apache...
有點像策略模式,使用相同的介面,但是實現會略有不同。

PHP的啟動和終止

  • 請求之前的開始階段:

    • MINIT:模組初始化階段。初始化一些擴充、常量、類、資源等所有被php指令碼用到的東西。(常駐記憶體,可以被所有請求使用。)

    • PRINT:模組啟用階段。PHP會調用所有模組的RINIT函數,在這個階段各個模組也可以執行一些相關的操作,比如初始化本次請求使用到的變數。

  • 請求之後的結束階段:

    • RSHUTDOWN:這個頁面請求執行完畢,或者被使用者給die(exit)了, 這時PHP會啟動回收程式,回收本次請求使用的資源。這次會執行所有已載入擴充的RSHUTDOWN(俗稱Request Shutdown)方法, 這時候擴充可以利用核心中的變數表等做的一些事情。因為PHP一旦把所有擴充的RSHUTDOWN方法執行完,便會釋放掉這次請求使用過的所有資源,比如變數表的所有變數、所有在這次請求中申請的記憶體等。

    • MSHUTDOWN:PHP執行所有擴充的MSHUTDOWN,釋放資源。

PHP的生命週期

1.單進程SAPI生命週期(CLI/CGI)

2.多進程SAPI生命週期(Apache2)

3.多線程的SAPI生命週期

4.Embed

Embed SAPI是一種比較特殊的sapi,容許你在C/C++語言中調用PHP/ZE提供的函數。(不太瞭解,明天看一下! http://www.laruence.com/2008/09/23/539.html)

綜述

理一下PHP的生命週期,以及PHP整個執行過程。還有怎麼通過SAPI和PHP模組溝通.
(圖片基本是從參考連結那邊拿過來的,站在前人的肩膀上。)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.