成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 深入解析PHP底層機(jī)制及相關(guān)原理

深入解析PHP底層機(jī)制及相關(guān)原理

熱門標(biāo)簽:OMG地圖標(biāo)注app 400電話鄭州申請 ai電話機(jī)器人加盟代理 地圖標(biāo)注視頻廣告入駐 電銷機(jī)器人便宜的有嗎 黔江400電話如何辦理 中原區(qū)電話機(jī)器人價格 招標(biāo)自動語音外呼系統(tǒng) gps 地圖標(biāo)注軟件

1、PHP是什么? 

PHP 指的是我們從外面看到的一套完整的系統(tǒng)。這聽起來有點(diǎn)糊涂,但其實(shí)并不復(fù)雜(PHP4 內(nèi)部結(jié)構(gòu)圖)。從功能上來分:我們可以分為三部分:

1、 解釋器部分(Zend 以引擎),負(fù)責(zé)對輸入代碼的分析、翻譯和執(zhí)行;

2、 功能性部分(PHP功能函數(shù)以及擴(kuò)展),負(fù)責(zé)具體實(shí)現(xiàn)語言的各種功能(比如它的函數(shù)等等);

3、 接口部分(SAPI),負(fù)責(zé)同 WEB 服務(wù)器的會話等功能。 Zend包括了第一部分的全部和第二部分的局部,PHP內(nèi)核 包括了第二部分的局部和第三部分的全部。他們合起來稱之為 PHP 包。Zend 構(gòu)成了語言的核心,同時也包含了一些最基本的 PHP 預(yù)定義函數(shù)的實(shí)現(xiàn)。PHP 包(內(nèi)核)則包含了所有創(chuàng)造出語言本身各種顯著特性的模塊。 

               

                                                                                                    (PHP 內(nèi)部結(jié)構(gòu)圖)

 從內(nèi)容模塊上來分:我們可以分為四層體系結(jié)構(gòu):

1)Zend引擎:Zend整體用純c實(shí)現(xiàn),是php的內(nèi)核部分,它將php代碼翻譯(詞法、語法解析等一系列編譯過程)為可執(zhí)行opcode的處理并實(shí)現(xiàn)相應(yīng)的處理方法、實(shí)現(xiàn)了基本的數(shù)據(jù)結(jié)構(gòu)(如hashtable、oo)、內(nèi)存分配及管理、提供了相應(yīng)的api方法供外部調(diào)用,是一切的核心,所有的外圍功能均圍繞zend實(shí)現(xiàn)。

2)Extensions擴(kuò)展:圍繞著zend引擎,extensions通過組件式的方式提供各種基礎(chǔ)服務(wù),我們常見的各種內(nèi)置函數(shù)(如array系列)、標(biāo)準(zhǔn)庫等都是通過extension來實(shí)現(xiàn),用戶也可以根據(jù)需要實(shí)現(xiàn)自己的extension以達(dá)到功能擴(kuò)展、性能優(yōu)化等目的(如貼吧正在使用的php中間層、富文本解析就是extension的典型應(yīng)用)。

3)Sapi :Sapi全稱是Server Application Programming Interface,也就是服務(wù)端應(yīng)用編程接口,sapi通過一系列鉤子函數(shù),使得php可以和外圍交互數(shù)據(jù),這是php非常優(yōu)雅和成功的一個設(shè)計,通過sapi成功的將php本身和上層應(yīng)用解耦隔離,php可以不再考慮如何針對不同應(yīng)用進(jìn)行兼容,而應(yīng)用本身也可以針對自己的特點(diǎn)實(shí)現(xiàn)不同的處理方式。

4)上層應(yīng)用: 這就是我們平時編寫的php程序,通過不同的sapi方式得到各種各樣的應(yīng)用模式,如通過webserver實(shí)現(xiàn)web應(yīng)用、在命令行下以腳本方式運(yùn)行等等。

          

                                                                              (php結(jié)構(gòu) )

其架構(gòu)思想:引擎(Zend)+擴(kuò)展(ext)的模式:降低內(nèi)部耦合

中間層(sapi):web server和php的通信接口, 隔絕web server和php。

如果php是一輛車,那么

車的框架就是php本身,即是我們外面看到一套完整系統(tǒng)。

Zend是車的引擎(發(fā)動機(jī))

Ext下面的各種組件就是車的輪子

Sapi可以看做是公路,車可以跑在不同類型的公路上

而一次php程序的執(zhí)行就是汽車跑在公路上。

因此,我們需要:性能優(yōu)異的引擎+合適的車輪+正確的跑道

2、php生命周期

      查看:深入理解php底層:php生命周期 :http://blog.csdn.net/hguisu/article/details/7377520

3 、sapi

如前所述,sapi通過通過一系列的接口,使得外部應(yīng)用可以和php交換數(shù)據(jù)并可以根據(jù)不同應(yīng)用特點(diǎn)實(shí)現(xiàn)特定的處理方法,我們常見的一些sapi有:

1) 、apache2handler :這是以apache作為webserver,采用mod_php模式運(yùn)行時候的處理方式,也是現(xiàn)在應(yīng)用最廣泛的一種。

2)、cgi :這是webserver和php直接的另一種交互方式,也就是大名鼎鼎的fastcgi協(xié)議,在最近今年fastcgi+php得到越來越多的應(yīng)用,也是異步webserver所唯一支持的方式。

3)、cli :命令行調(diào)用的應(yīng)用模式

如圖:Sapi的簡單示意圖


 Sapi的定義及主要接口函數(shù):

struct _sapi_module_struct { char *name; // 名字標(biāo)識 char *pretty_name; // 更好理解的名字 int (*startup)(struct _sapi_module_struct *sapi_module); // 啟動函數(shù) int (*shutdown)(struct _sapi_module_struct *sapi_module); // 關(guān)閉方法 int (*activate)(TSRMLS_D); //激活 int (*deactivate)(TSRMLS_D); // 停用 int (*ub_write)(const char *str, unsigned int str_length TSRMLS_DC); // 沒有緩存的寫操作(unbuffered write) void (*flush)(void *server_context); // flush struct stat *(*get_stat)(TSRMLS_D); // get uid char *(*getenv)(char *name, size_t name_len TSRMLS_DC); // getenv void (*sapi_error)(int type, const char *error_msg, ...); /* error handler */ int (*header_handler)(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC); /* header handler */ /* send headers handler */ int (*send_headers)(sapi_headers_struct *sapi_headers TSRMLS_DC); void (*send_header)(sapi_header_struct *sapi_header, void *server_context TSRMLS_DC); /* send header handler */ int (*read_post)(char *buffer, uint count_bytes TSRMLS_DC); /* read POST data */ char *(*read_cookies)(TSRMLS_D); /* read Cookies */ /* register server variables */ void (*register_server_variables)(zval *track_vars_array TSRMLS_DC); void (*log_message)(char *message); /* Log message */ time_t (*get_request_time)(TSRMLS_D); /* Request Time */ void (*terminate_process)(TSRMLS_D); /* Child Terminate */ char *php_ini_path_override; //覆蓋ini路徑 ... ...};

這里介紹一下其中一些主要函數(shù)

· startup:php被調(diào)用時初始化操作,比如cgi模式,在startup的時候會加載所有的extension并執(zhí)行模塊初始化工作。

· shutdown:php關(guān)閉時收尾工作

· activate:請求初始化

· dectivate:請求結(jié)束時收尾工作

· ub_write:指定數(shù)據(jù)輸出方式,比如apache2handler方式,由于php作為apache的一個so存在,因此其輸出也就是調(diào) 用apache的ap_write函數(shù),而在cgi模式下,會系統(tǒng)調(diào)用write。

·  sapi_error:錯誤處理函數(shù)

·  read_post:讀取post數(shù)據(jù)

·  register_server_variables:往$_SERVER中注冊環(huán)境變量這個一般根據(jù)不同協(xié)議標(biāo)準(zhǔn)注冊注冊的變量。

在php源碼中,sapi實(shí)現(xiàn)了很多接口:如下圖:


4、php腳本的執(zhí)行

SAPI處于PHP架構(gòu)的上層,而真正的腳本執(zhí)行是有Zend引擎來完成。

目前語言分為兩類:

第一類:編譯型語言.如c/c++ java之類,他們的共性是運(yùn)行之前必須對源代碼進(jìn)行編譯,然后運(yùn)行編譯后的目標(biāo)文件。

第二類語言:解釋型語言:如PHP,Ruby,Python。他們需要解釋器來執(zhí)行這些源代碼。實(shí)際上這些語言還是要經(jīng)過編譯環(huán)節(jié)的。只不過他們在運(yùn)行的時候進(jìn)行編譯,為了效率,并不是每次執(zhí)行的時候都會重新編譯,比如PHP的各種opcode緩存擴(kuò)展(如APC Xcache等)。

說明:PHP從2000年發(fā)布的PHP4開始就不是解釋性語言。當(dāng)一個PHP腳本被執(zhí)行的時候,首先PHP源代碼由Zend引擎編譯成名為Zend opcodes的機(jī)器代碼。這些代碼保存在RAM中。然后執(zhí)行opcodes運(yùn)行真正的腳本。因此,PHP實(shí)際上和Java,C#等語言一樣是編譯語言。否則,它的執(zhí)行會很慢。

我們來看PHP腳本是怎么被執(zhí)行的。如hello.php:

?php$str = "Hello world!\n";echo $str;

命令行執(zhí)行:php hello.php

輸出結(jié)果顯然是:Hello world!

但是執(zhí)行腳本的時候,PHP/Zend做了什么呢?

4.1、程序的執(zhí)行:

1)傳遞給php程序需要的執(zhí)行文件hello.php,php程序完成基本的準(zhǔn)備工作后啟動PHP及Zend引擎,加載注冊的擴(kuò)展模塊。

2) 初始化完后讀取腳本文件,Zend引擎對腳本進(jìn)行此詞法分析,語法分析,然后有Zend引擎編譯成opcode碼,最后執(zhí)行 opcode碼。

php代碼的執(zhí)行過程如下圖:

                           

php實(shí)現(xiàn)了一個典型的動態(tài)語言執(zhí)行過程:拿到一段代碼后,經(jīng)過詞法解析、語法解析等階段后,源程序會被翻譯成一個個指令(opcodes),然后ZEND虛擬機(jī)順次執(zhí)行這些指令完成操作。PHP本身是用c實(shí)現(xiàn)的,因此最終調(diào)用的也都是c的函數(shù),實(shí)際上,我們可以把php看做是一個c開發(fā)的軟件。

通過上面描述不難看出,php的執(zhí)行的核心是翻譯出來的一條一條指令,也即opcode.

4.2、詞法分析和語法分析

解釋器一般包括兩部分:

1)、 讀取源程序,并處理語言結(jié)構(gòu)

2)、處于語言結(jié)構(gòu)并生成目標(biāo)程序

而Lex和Yacc可以解決第一個問題。很多編程都有Lex/Yacc作為語言的詞法語法分析生成器,比如PHP,Python、Ruby已經(jīng)MySql的sql語言。

Lex生成詞法分析器。

Yacc語法分析生成器

4. 3、opcode

PHP 構(gòu)建在Zend虛擬機(jī)(Zend VM)之上的,PHP的opcode就是ZEND 虛擬機(jī)中的指令,即Opcode是php程序執(zhí)行的最基本單位。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解PHP的執(zhí)行原理和流程
  • 通過代碼實(shí)例解析PHP session工作原理
  • PHP數(shù)組實(shí)際占用內(nèi)存大小原理解析
  • PHP超全局變量實(shí)現(xiàn)原理及代碼解析
  • PHP數(shù)組Key強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)原理解析
  • JS PHP字符串截取函數(shù)實(shí)現(xiàn)原理解析
  • PHP unset函數(shù)原理及使用方法解析
  • PHP 命名空間原理與用法詳解
  • 如何理解PHP程序執(zhí)行的過程原理

標(biāo)簽:那曲 哈密 日照 孝感 阿里 北京 濟(jì)源 池州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入解析PHP底層機(jī)制及相關(guān)原理》,本文關(guān)鍵詞  深入,解析,PHP,底層,機(jī)制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入解析PHP底層機(jī)制及相關(guān)原理》相關(guān)的同類信息!
  • 本頁收集關(guān)于深入解析PHP底層機(jī)制及相關(guān)原理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲精品视频导航| 一二三区视频在线观看| 91精品啪在线观看国产| 成人满18在线观看网站免费| 久久综合色天天久久综合图片| 亚洲精品国产a久久久久久| 欧美日本乱大交xxxxx| www视频免费| 国产h视频在线播放| 国产精品视频一区二区久久| 中文字幕国语官网在线视频| baoyu135国产精品免费| 一本色道精品久久一区二区三区| 中文字幕在线观看一区二区三区| 国产精品自产拍高潮在线观看| 中文字幕巨乱亚洲| 一二三在线视频社区| 亚洲乱码精品一二三四区日韩在线| 午夜激情在线视频| 精品久久久久久综合日本| 超碰97人人做人人爱少妇| 午夜成人鲁丝片午夜精品| 欧美三级资源在线| 国产二区三区在线| 欧美激情小视频| 激情视频在线观看一区二区三区| 色在线免费观看| 日韩精品久久久久久久软件91| 高清美女视频一区| 亚洲一区二区三区中文字幕| 免费污视频在线观看| 国产精品免费在线| 欧美啪啪精品| 97超碰国产精品女人人人爽| 欧美在线视频一区二区| 久久久一区二区三区四区| 久久免费精品视频在这里| 91麻豆视频在线观看| bl在线肉h视频大尺度| 中文字幕av网址| 亚洲一级大片| 超碰在线资源站| 亚洲毛片一区二区三区| 中文字幕一区二区三区域| 天堂va欧美ⅴa亚洲va一国产| 99久久久国产| 一级黄色片在线| 91在线播放国产| 51免费午夜啪啪| 午夜久久久久久久久久| 亚洲国产综合网| 成人性生交大片免费看中文| 亚洲a∨日韩av高清在线观看| jizz蜜桃视频在线观看| 免费视频拗女稀缺一区二区| av二区在线| 日本高清xxxx| 久久亚洲国产精品日日av夜夜| 亚洲瘦老头同性70tv| 日本中文字幕一级片| 久久久久久久久久免费视频| 美女无遮挡网站| 国产精品午夜免费| 欧美性受xxxx免费视频| 污污污www精品国产网站| 日韩在线精品视频| 巨大荫蒂视频欧美另类大| 亚洲一卡二卡三卡四卡无卡网站在线看| 国产精品后入内射日本在线观看| 婷婷六月综合亚洲| 亚洲视频小说图片| 国产高中女学生第一次| 成人无遮挡免费网站视频在线观看| 中文字幕乱码一区二区免费| 日韩精品久久久久久久酒店| 黄色片大全在线观看| 亚洲图片欧美一区| 麻豆国产精品一区| 韩日欧美一区二区| 欧美色图首页| 欧美日韩国产在线看| 四虎视频在线精品免费网址| 免费看的黄色录像| 精品伦理一区二区| 国产人成高清视频观看| 成人性生交大片免费看网站| 国产精品天干天干在观线| 欧美巨乳在线观看| 一区二区在线观看免费视频| 国模冰冰炮一区二区| jizz一区二区三区| 日韩理论片在线观看| 日韩精品一区二区三区视频在线观看| 深夜福利视频在线免费观看| 欧洲精品99毛片免费高清观看| 国产精品国产成人国产三级| 亚洲AV午夜精品| 久久人人爽人人片| 性猛交xxxx乱大交孕妇印度| 中文资源在线网| 色综合久久六月婷婷中文字幕| 黄色录像一级片| 青青草观看免费视频在线| 午夜不卡福利视频| 国产av无码专区亚洲av| 天堂久久一区二区三区| 欧美裸体在线版观看完整版| caoprom在线| 老司机激情视频| 伊人久久久久久久久久久久久久| 伊人久久亚洲影院| 亚洲在线免费看| 欧美一区二区三区不卡| 久青草视频在线观看| 国产高清免费av在线| 紧身裙女教师波多野结衣| 欧美日韩国产高清电影| 色哟哟无码精品一区二区三区| 日本老熟妇毛茸茸| 麻豆精品视频在线观看视频| 中文字幕理论片| 亚洲免费精彩视频| 精品中文字幕人| 欧美舌奴丨vk视频| 国产微拍精品一区| 国产一区二区精品| 国产天堂在线| 免费在线看v| 日韩欧美三级在线观看| 91丝袜脚交足在线播放| 五月天激情四射| 国产精品你懂的| 亚洲激情男女视频| 日韩欧美精品一区二区综合视频| av有声小说一区二区三区| 91久久精品国产| 91精品黄色片免费大全| 色婷婷av一区二区三区丝袜美腿| 日韩精品视频中文字幕| 国产福利精品视频| 国产精品白丝久久av网站| 91国产精品视频在线观看| 91精品国产综合久久香蕉的用户体验| 裸体一区二区| 进去里视频在线观看| 国产自产v一区二区三区c| 黄页网站大全在线观看| 欧美深深色噜噜狠狠yyy| 亚洲在线免费观看视频| 成人午夜视频一区二区播放| 尤物视频在线免费观看| 人妻熟女aⅴ一区二区三区汇编| 91国产丝袜在线播放| а√天堂8资源在线官网| 国产精品久久国产精麻豆99网站| 婷婷四房综合激情五月| 亚洲一区国产| 亚洲第一成肉网| 91亚洲大成网污www| 一区二区日韩免费看| 波多野结衣乳巨码无在线观看| 亚洲人成网站在线观看播放| 国产毛片精品国产一区二区三区| 亚洲国产精品久久久久蝴蝶传媒| 在线播放/欧美激情| 黑人极品ⅴideos精品欧美棵| 黄色毛片免费看| japanese国产在线观看| av在线这里只有精品| 国产情侣一区| 欧美mv日韩mv国产网站app| 欧美超强性xxxxx| 欧美另类老女人| 亚洲美女精品视频| 黄色大秀av大片| 亚洲激情欧美| 欧美精品久久久久久久免费观看| 欧美电视剧在线看免费| 久久久免费观看| 91在线国产电影| 欧美6699在线视频免费| 亚洲专区一二三| 国产91在线高潮白浆在线观看| 国产一级精品毛片| 日韩免费高清在线观看| 美女黄色免费看| 国内av免费观看| 日韩一区二区高清视频| 黄色一级片视频| 色呦呦久久久| 蜜桃av噜噜一区二区三区小说| 国产又白又嫩又紧又爽18p| 在线观看国产视频| 91日韩免费| 天天干天天草天天射| 国产小视频自拍| tube8在线hd| sese在线视频| 亚洲自拍偷拍一区二区| 欧美日韩直播| 加勒比一区二区三区在线| 国产欧美日韩综合一区在线播放| 国产精品96久久久久久又黄又硬| 夜夜骑日日射| 亚洲美女在线播放| 成人免费淫片免费观看| 91精品福利在线一区二区三区| 午夜国产精品理论片久久影院| 鬼打鬼之黄金道士1992林正英| 国产美女福利视频| 国产丝袜欧美中文另类| 五月婷婷激情网| 波多野结衣二区三区| 无码人妻少妇色欲av一区二区| 国产日韩一区二区在线| 亚洲精品一区二区三区蜜桃| 亚洲欧美综合精品久久成人| 久青青在线观看视频国产| 日本xxxxwww| 欧美性生活影院| 亚洲成人在线| 亚洲黄色三级视频| 亚洲欧美精品久久| 男人天堂1024| 亚洲综合精品伊人久久| 性感美女极品91精品| 亚洲黄色小说网| 久久爱一区二区| 欧美猛少妇色xxxxx| 人人做人人澡人人爽欧美| 夜夜摸视频网| 欧美精品18| 日本一本草久p| 国产精品久久久久久久久久久久久久| sm在线观看| 欧美不卡视频在线观看| 亚洲精品国精品久久99热| 91在线视频免费| 日本欧美www| 亚洲欧美日韩中文视频| 公共露出暴露狂另类av| 夜夜嗨av一区二区三区| 成年人在线免费观看视频网站| v片在线观看| 亚洲精品综合在线| 久久这里只有精品18| 中文字幕一区二区三区乱码不卡| 亚洲精品自拍区在线观看| 亚洲国产另类久久久精品极度| 天天综合网天天综合色| 中文字幕中文字幕一区| 成人欧美视频在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产欧美精品在线播放| 国产精品久久一区主播| 手机在线免费av| 正在播放亚洲1区| 午夜精品久久久久久久男人的天堂| 日本国产欧美| 欧美巨乳美女视频| 久久久久亚洲天堂| 国产精品一区二区在线观看网站| 97在线看免费观看视频在线观看| 日本免费黄色| 91黄色免费观看| 大片免费在线看视频| 日韩欧美在线中字| 免费一级黄色大片| 激情综合视频| 51国产成人精品午夜福中文下载| 中文字幕在线播放视频| 狠狠操天天操夜夜操| 护士精品一区二区三区| 91丝袜在线| 青青久久av北条麻妃海外网| 日韩精品永久网址| 欧美舌奴丨vk视频| 性欧美在线看片a免费观看| 91传媒免费观看| 黄色小说综合网站| 天堂аⅴ在线地址8| 欧美承认网站| 三级在线看中文字幕完整版| 成人黄视频在线观看| 国产乱子轮精品视频| 手机在线成人免费视频| 欧美精品一二区| 人人草人人干| 91色p视频在线| 国产一区二区精品久久99| 欧美一级欧美三级| 亚洲欧美综合久久久| 欧美aaaaa成人免费观看视频| 免费成人小视频| 全免费a级毛片| 久久久久在线观看| 视频二区欧美毛片免费观看| 亚洲不卡1卡2卡三卡2021麻豆| 韩国精品一区二区三区六区色诱| 一区二区三区不卡在线视频| 99精品视频99| 日本特黄特色aaa大片免费| 欧美国产激情| 黄色毛片网站| 亚洲欧洲无码一区二区三区| 日韩欧美在线不卡| 欧美激情在线狂野欧美精品| 67194成人在线观看| 日韩欧美精品在线观看视频| 国产综合视频| 欧美乱大交xxxxx另类| 中文av资源| 日本美女一级片| 鲁一鲁一鲁一鲁一色| 亚洲国产精久久久久久| 首页亚洲欧美制服丝腿| 色网在线免费观看| www.日本高清视频| 亚洲男人都懂第一日本| 国产日本欧美一区二区| 国产精品久久久久久妇女| 日日摸日日搞日日| 国产精品日韩精品中文字幕| 在线日韩成人| 特大黑人巨人吊xxxx| 99久久99久久精品| 欧洲精品在线播放| 国产精品久久福利|