PHP架構-PHP內核

本文收集/翻譯了關於PHP架構、內核函數及運行原理方面的連接,php

經過系列相關文章,能瞭解PHP和Zend的具體含義和區別、PHP的總體架構、PHP中間碼、PHP擴展模塊以及整個用戶請求處理過程。html


PHP內核代碼運行過程

激活和運行PHP解釋器有幾個關鍵步驟:web

當一個應用程序想啓動一個PHP解釋器,首先調用php_module_startup。緩存

這個函數是解釋器的主開關。服務器

它激活註冊過的SAPI,初始化輸出緩存系統,啓動Zend引擎,架構

讀入php.ini文件,啓用配置,準備好處理第一次請求。函數

核心模塊使用到的一些重要函數有:

* php_module_startup - PHP主入口函數.
 
* php_startup_extensions - 運行全部已註冊的擴展的初始化函數.
 
* php_output_startup - 啓動輸出系統.
 
* php_request_startup - 是請求開始階段的主函數,每次請求,SAPI函數會向下調用該函數,而後該函數再向下調用Zend引擎來進行初始化,以及調用全部已註冊模塊的請求啓動函數.
 
* php_output_activate - 激活輸出系統,來使用SAPI相關的輸出函數.
 
* php_init_config - 讀取php.ini文件並啓用配置
 
* php_request_shutdown - 主要負責銷燬每一個請求所佔用的資源.
 
* php_end_ob_buffers - 用來刷新輸出緩存,若是輸出緩存被啓用了的話.
 
* php_module_shutdown - 這個是PHP的主關閉函數,觸發解釋器全部其他的關閉(shutdown)函數.
翻譯


上述中的SAPI是PHP提供給web服務器及其餘應用的開放接口,可參考:htm

http://en.wikipedia.org/wiki/Server_Application_Programming_Interfaceblog

原文連接:

http://blog.areawebsolutions.com/php-architecture-the-php-core.html/comment-page-1


PHP架構圖:




by iefreer