PHP核心之旅-1.生命週期
PHP 核心之旅系列
1.SAPI介面
PHP具體應用的程式設計介面。
2.開始和結束
PHP開始執行以後會經過兩個主要的階段:
處理請求之前的開始階段和請求之後的結束階段。
1.1開始階段:
1.1.1 模組初始化階段(MINT),只進行一次。
1.1.2 模組啟用階段(RINIT),PHP會呼叫所有模組的RINIT函式
1.2結束階段(指令碼執行到末尾或者通過呼叫exit()或die()函式,PHP都將進入結束階段)
1.2.1 停用模組(RSHUTDOWN,對應RINIT)
1.2.2 關閉模組(MSHUTDOWN,對應MINIT),Web伺服器退出或者命令列指令碼執行完畢退出時
3.單程序SAPI生命週期
CLI/CGI模式的PHP屬於單程序的SAPI模式。處理一次請求後就關閉。
在各個階段之間PHP還做了很多工作。
(1)啟動
(2)初始化若干全域性變數
(3)初始化若干常量
(4)初始化Zend引擎和和性組建
(5)解析php.ini
(6)全域性操作函式的初始化
(7)初始化靜態構建的模組和共享模組(MINIT)
(8)禁用函式和類
(9)ACTIVATION
(10)啟用Zend引擎
(11)啟用SAPI
(12)環境初始化
(13)模組請求初始化
(14)執行
php_execute_script函式包含了執行PHP指令碼的全部過程
(15)DEACTIVATION
(16)flush
sapi_flush將最後的內容刷新出去
(17)關閉Zend引擎
4.多程序SAPI生命週期
5.Zend引擎
Zend引擎是PHP實現的核心,提供了語言實現上的基礎設施。
PHP的語法時限,指令碼的編譯執行環境,擴充套件機制以及記憶體管理。
很多PHP擴充套件都是使用Zend API,而Zend正是PHP語言本身的實現,PHP只是使用Zend這個核心來構建PHP語言的。
參考資料:http://www.php-internals.com/book/?p=chapt02/02-01-php-life-cycle-and-zend-engine
作 者:
出 處:http://www.cnblogs.com/jackson0714/
關於作者:專注於微軟平臺的專案開發。如有問題或建議,請多多賜教!
版權宣告:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。
特此宣告:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點選文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!
相關推薦
PHP核心之旅-1.生命週期
PHP 核心之旅系列 1.SAPI介面 PHP具體應用的程式設計介面。 2.開始和結束 PHP開始執行以後會經過兩個主要的階段: 處理請求之前的開始階段和請求之後的結束階段。 1.1開始階段: 1.1.1 模組初始化階段(MINT),只進行一次。
Linux下PHP開發之旅-1.開發環境搭建
一.下載相關安裝包 從官網:https://www.apachefriends.org/download.html 下載對應版本的安裝包,由於學的版本為5.5,選擇5.6版本安裝包 二.執行安裝 由於下載的檔案直接就是xampp-linux-x64-5.6.39-0-i
PHP核心之旅-5.強大的陣列
PHP 核心之旅系列 一、陣列的內部結構 1.底層實現為散列表(HashTable,也稱作雜湊表) 2.散列表的概念: 是根據關鍵碼值(Key value)而直接進行訪問的資料結構。通過把關鍵碼值對映到表中一個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做散列表
PHP核心之旅-3.變數
PHP 核心之旅系列 一、弱型別語言 php是弱型別語言。一個變數可以表示任意資料型別。 php強大的一部分原因就是因為它是弱型別語言,但是弱型別語言也有它的缺點,使用不當也會造成很大的問題。 定義變數的時候不需要指定變數型別,也不需要初始化變數。 //定義變數 $test;
PHP核心之旅-2.SAPI中的Cli
PHP 核心之旅系列 一、SAPI是什麼? 1.1 理解SAPI (1)SAPI是PHP框架的介面層。有很多種伺服器的SAPI的實現,程式碼在sapi資料夾下。常見的介面抽象層實現有:cgi,apache2,cli,embed,fpm。 (2)各個伺服器遵循著相同的約定,每個伺服器的SAP
PHP核心之旅-6.垃圾回收機制
回收PHP 核心之旅系列 一、引用計數 只有使用引用計數的變數才需要回收。引用計數就是用來標記變數的引用次數的。 當有新的變數zval指向value時,計數器加1,當變數zval銷燬時,計數器減一。當引用計數為0時,表示此value沒有被任何變數指向,可以對value進行釋放。 下面的例子說明引用
PHP核心之旅-4.可變長度的字串
PHP 核心之旅系列 一、字串原始碼 zend_string 1 typedef struct _zend_string zend_string; //定義 zend_string變數 2 struct _zend_string { //_zend_string結構體 3
C#多線程之旅(1)——介紹和基本概念
隔離 cnblogs 影響 3-0 同時 ima 並行 logic mes 閱讀目錄 一、多線程介紹 二、Join 和Sleep 三、線程怎樣工作 四、線程和進程 五、線程的使用和誤用 原文地址:C#多線程之旅(1)——介紹和基本概念 C#多線程之旅目錄: C#
Android開發之旅1:環境搭建及HelloWorld
lan 及其 其它 ply 新項目 bsp 驗證 for 對話框 ——工欲善其事必先利其器 引言 本系列適合0基礎的人員,因為我就是從0開始的,此系列記錄我步入Android開發的一些經驗分享,望與君共勉!作為Android隊伍中的一個新人的
PHP-學習之路1
則表達式 字符串 開發流程 模式 配置 這一 目前 這就是 項目結構 相信入職快有5個月了,目前項目做過HIS,zySystem,ComStoreSystem當然今天不是來介紹的,後期直到第四個月後APP護身寶經理拍板今後也就是明年正式交於我們團隊接手與擴展,運維。雖然
python之旅 1-29 補充內容,深淺copy
abc 相同 多少 刪除列 cti aec 保持 mage amp # l1 = [111,222,333,444,555] 將索引為奇數位的元素刪除. # l1 = [111,222,333,444,555] # del l1[1::2] # print(l1)
java學習之旅-1
ava 什麽 不用 補碼 void ret 負數 類型 是什麽 學了java差不多兩天了,要說和C語言的區別嘛,還是有很多的,但不得不說,先學了C語言再學其他的語言真的有很大幫助。首先呢,先看看java和C語言的基本格式吧。java的格式: public class De
Java併發程式設計之執行緒生命週期、守護執行緒、優先順序和join、sleep、yield
Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead
php 框架之laravel5.1 tp5 資料庫設定檔案位置
幾乎所有的資料庫設定檔案都會在config目錄下的database.php檔案中 laravel框架資料庫設定檔案位置 Laravel1\blog\config\database.php tp框架資料庫設定檔案位置 Tp\think\config\
[Python3填坑之旅]1、urllib模組網頁爬蟲訪問中文網址出錯
正在學習網頁爬蟲,用的Python3+urllib模組,當遇到連結裡有中文字元的時候總是報錯。之前以為是Python編碼的問題,不斷去嘗試不同的編碼去encode與decode,可以問題總是解決不了,沒有辦法繼續查閱資料,最後發現其實解決方法特別簡單。 問題描述 當我訪問帶有中文
架構必經之路2 - 熔斷機制 架構之旅1 - 扣減庫存
架構之旅1 - 扣減庫存 架構之旅2 - 熔斷機制 專案中要做一個熔斷機制,預防對第三方的介面呼叫壓力太大。下面我介紹下專案中用到的熔斷機制。 一、熔斷機制 1.熔斷檢測機制 (1)請求call到backend後,首先判
安卓基礎之Activity的生命週期
Activity的生命週期 onCreate 在Activity被建立時呼叫 onDesdroty 在Activity銷燬時呼叫 onRestart 在Activity重新開啟時呼叫 onStart 在Activity可見時呼叫 onStop 在Activity不可見時呼叫 onR
Android--四大元件之BroadCastReceiver(生命週期、實現原理及使用等)
####1. BroadCastReceiver是什麼? ####2. 廣播型別 ######1). 有序廣播 ######2). 無序廣播 ####3. 生命週期 ####4. 實現原理 ####5. 使用方法 ####6. 許可權問題(安全性) ####7. LocalBroad
Hash-retrieval復現之旅(1)------------------------------malti-label 多標籤影象的檢索程式碼復現
本文參考論文是arxiv2015的關於多標籤檢索的論文Deep Semantic Ranking Based Hashing for Multi-Label Image Retrieval,作者 Fang Zhao Yongzhen Huang Li
Web前端學習筆記——VueJS之過濾器、生命週期、請求、動畫
品牌管理案例 新增新品牌 刪除品牌 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewpo