1. 程式人生 > >PHP核心之旅-1.生命週期

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