最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP架構(gòu)及原理知識(shí)點(diǎn)詳解

 更新時(shí)間:2019年12月22日 09:11:37   作者:silencement  
這篇文章主要介紹了PHP架構(gòu)及原理知識(shí)點(diǎn)以及相關(guān)實(shí)例講解,需要的朋友們參考下。

記得我剛開始學(xué)習(xí)PHP的時(shí)候,許多面試官會(huì)經(jīng)常問我PHP是什么,那時(shí)的標(biāo)準(zhǔn)回答是PHP是一種弱類型動(dòng)態(tài)腳本編程語言,開源,

免費(fèi),是超文本預(yù)處理器的縮寫。

這只是很淺的解釋,PHP對我來說是一個(gè)工具,是我手里的一把錘子,雖然這把錘子時(shí)常被調(diào)侃為兩邊都是起釘器的錘子。

多進(jìn)程模型

PHP是以多進(jìn)程模型設(shè)計(jì)的,這樣的好處是請求之間互不干涉,一個(gè)請求失敗也不會(huì)對其他進(jìn)程造成影響,作為最開始僅僅用于個(gè)人網(wǎng)站的一個(gè)工具集這樣的設(shè)計(jì)并沒有什么不妥,隨著PHP的應(yīng)用變大,訪問量增加這種方式顯然是不合適的,因?yàn)閱?dòng)一個(gè)進(jìn)程的開銷對于海量請求是不劃算的,所以現(xiàn)在PHP基本都是運(yùn)行在PHP-FPM的管理下的,這是一個(gè)PHP進(jìn)程管理器,它常駐內(nèi)存啟動(dòng)一些PHP進(jìn)程待命,當(dāng)請求進(jìn)入時(shí)分配一個(gè)進(jìn)程進(jìn)行處理,PHP進(jìn)程處理完畢后回收進(jìn)程,但并不銷毀進(jìn)程,這讓PHP也能應(yīng)對高流量的訪問請求。

當(dāng)然現(xiàn)在也有PHP多線程的解決方案和基于協(xié)程的解決方案讓PHP更高效的處理WEB請求。

弱類型

與 JAVA、C/C++ 不同,PHP是一門若類型的語言,變量在聲明的那一刻是不需要確定它的類型的,而在運(yùn)行時(shí)類型也會(huì)發(fā)生顯式或隱式的類型改變,這也是PHP開發(fā)應(yīng)用迅速、方便的原因之一。

其他

Zend 引擎 + Ext 擴(kuò)展 的模式降低了內(nèi)部耦合,可以方便的為PHP本身增加功能和去除功能。

語法簡單,沒有太多強(qiáng)制規(guī)范,編程風(fēng)格上既可以用過程式、也可以用面向?qū)ο蟮姆绞竭M(jìn)行開發(fā),當(dāng)然函數(shù)式也可以。

以目前的 PHP 主流版本 PHP7 和 PHP5 來說架構(gòu)是如上圖所示,主要有四層體系構(gòu)成,從下到上依次是 Zend 引擎、Extensions 擴(kuò)展、SAPI 接口、上層應(yīng)用。

Zend 引擎

Zend 引擎是 PHP4 以后加入 PHP 的,是對原有PHP解釋器的重寫,整體使用 C 語言進(jìn)行開發(fā),也就是說可以把PHP理解成用C寫的一個(gè)編程語言軟件,引擎的作用是將PHP代碼翻譯為一種叫opcode的中間語言,它類似于JAVA的ByteCode(字節(jié)碼)。

引擎對PHP代碼會(huì)執(zhí)行四個(gè)步驟:

詞法分析 Scanning(Lexing),將 PHP 代碼轉(zhuǎn)換為語言片段(Tokens)。解析 Parsing, 將 Tokens 轉(zhuǎn)換成簡單而有意義的表達(dá)式。編譯 Compilation,將表達(dá)式編譯成Opcode。執(zhí)行 Execution,順序執(zhí)行Opcode,每次一條,以實(shí)現(xiàn)PHP代碼所表達(dá)的功能。

APC、Opchche 這些擴(kuò)展可以將Opcode緩存以加速PHP應(yīng)用的運(yùn)行速度,使用它們就可以在請求再次來臨時(shí)省略前三步。

引擎也實(shí)現(xiàn)了基本的數(shù)據(jù)結(jié)構(gòu)、內(nèi)存分配及管理,提供了相應(yīng)的API方法供外部調(diào)用。

Extensions 擴(kuò)展

常見的內(nèi)置函數(shù)、標(biāo)準(zhǔn)庫都是通過extension來實(shí)現(xiàn)的,這些叫做PHP的核心擴(kuò)展,用戶也可以根據(jù)自己的要求安裝PHP的擴(kuò)展。

SAPI

SAPI 是 Server Application Programming Interface 的縮寫,中文為服務(wù)端應(yīng)用編程接口,它通過一系列鉤子函數(shù)使得PHP可以和外圍交換數(shù)據(jù),SAPI 就是 PHP 和外部環(huán)境的代理器,它把外部環(huán)境抽象后,為內(nèi)部的PHP提供一套固定的,統(tǒng)一的接口,使得 PHP 自身實(shí)現(xiàn)能夠不受錯(cuò)綜復(fù)雜的外部環(huán)境影響,保持一定的獨(dú)立性。

通過 SAPI 的解耦,PHP 可以不再考慮如何針對不同應(yīng)用進(jìn)行兼容,而應(yīng)用本身也可以針對自己的特點(diǎn)實(shí)現(xiàn)不同的處理方式。

上層應(yīng)用

程序員編寫的PHP程序,無論是 Web 應(yīng)用還是 Cli 方式運(yùn)行的應(yīng)用都是上層應(yīng)用,PHP 程序員主要工作就是編寫它們。

總結(jié)

這些東西如果你學(xué)習(xí)過 android 開發(fā)理解起來顯然更容易,因?yàn)閍ndroid的架構(gòu)和PHP的這種架構(gòu)看起來很相似。當(dāng)你理解這些后你就會(huì)理解為什么PHP的創(chuàng)始人會(huì)說PHP開發(fā)其實(shí)是不需要框架的,因?yàn)镻HP的設(shè)計(jì)本身就是一個(gè)類似框架的東西,如果用汽車比喻的話PHP本身就是就是車的骨架,Zend的是引擎,Ext是輪子,方向盤等車的組件,SAPI 就是路。

對于這些內(nèi)容,可能有的人覺得有點(diǎn)無用,因?yàn)楹芏嗳似珗?zhí)的認(rèn)為自己只是個(gè)開車的,為什么開車的要了解車子是怎么跑起來的,對于了解如何制造一輛車更是嗤之以鼻。我曾經(jīng)也這樣認(rèn)為,直到翻譯Laravel文檔時(shí),Laravel 的作者給了我一些啟發(fā),也把這些話送給看到這個(gè)文章的你們:

使用「現(xiàn)實(shí)世界」中的任何工具時(shí),如果理解這個(gè)工具的運(yùn)作原理,那么你會(huì)更加得心應(yīng)手的使用這個(gè)工具。應(yīng)用開發(fā)也是這樣。當(dāng)你明白你的開發(fā)工具如何運(yùn)行的,你就會(huì)對它們的使用游刃有余。

這篇文檔的目的是讓你更好的理解 Laravel 框架如何進(jìn)行工作及它的工作原理。通過對框架進(jìn)行全面的了解,一切都不會(huì)那么「神奇」,也將會(huì)讓你更有自信的構(gòu)建你的應(yīng)用。

以上就是PHP是什么-PHP的架構(gòu)及原理概述的詳細(xì)內(nèi)容,感謝大家的學(xué)習(xí)和對腳本之家的支持。

相關(guān)文章

  • 利用 fsockopen() 函數(shù)開放端口掃描器的實(shí)例

    利用 fsockopen() 函數(shù)開放端口掃描器的實(shí)例

    下面小編就為大家?guī)硪黄?fsockopen() 函數(shù)開放端口掃描器的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 淺談PHP eval()函數(shù)定義和用法

    淺談PHP eval()函數(shù)定義和用法

    下面小編就為大家?guī)硪黄獪\談PHP eval()函數(shù)定義和用法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • php解決搶購秒殺抽獎(jiǎng)等大流量并發(fā)入庫導(dǎo)致的庫存負(fù)數(shù)的問題

    php解決搶購秒殺抽獎(jiǎng)等大流量并發(fā)入庫導(dǎo)致的庫存負(fù)數(shù)的問題

    最近在做一個(gè)團(tuán)購項(xiàng)目,遇到個(gè)問題,就是在搶購、秒殺、抽獎(jiǎng)等活動(dòng)時(shí),庫存數(shù)量有限,但是同時(shí)下單人數(shù)超過了庫存數(shù)量,就會(huì)導(dǎo)致商品超售問題。那么我們怎么來解決這個(gè)問題呢,我的思路如下:
    2014-06-06
  • ThinkPHP中pathinfo的訪問模式、路徑訪問模式及URL重寫總結(jié)

    ThinkPHP中pathinfo的訪問模式、路徑訪問模式及URL重寫總結(jié)

    這篇文章主要介紹了ThinkPHP中pathinfo的訪問模式、路徑訪問模式及URL重寫總結(jié),是ThinkPHP路由訪問的基礎(chǔ)知識(shí),在ThinkPHP開發(fā)中非常重要,需要的朋友可以參考下
    2014-08-08
  • PHP微信開發(fā)之查詢微信精選文章

    PHP微信開發(fā)之查詢微信精選文章

    這篇文章主要為大家詳細(xì)介紹了PHP微信開發(fā)之簡單實(shí)現(xiàn)查詢微信精選文章的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • php設(shè)計(jì)模式之建造器模式分析【星際爭霸游戲案例】

    php設(shè)計(jì)模式之建造器模式分析【星際爭霸游戲案例】

    這篇文章主要介紹了php設(shè)計(jì)模式之建造器模式,結(jié)合星際爭霸游戲案例形式分析了PHP建造器模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • ThinkPHP 6 添加跳轉(zhuǎn)提示擴(kuò)展 liliuwei/thinkphp-jump的操作方法

    ThinkPHP 6 添加跳轉(zhuǎn)提示擴(kuò)展 liliuwei/thinkphp-jump的操作

    liliuwei/thinkphp-jump 是 TP5 中經(jīng)典跳轉(zhuǎn)提示,在 TP6 中已經(jīng)取消,通過 composer 下載該擴(kuò)展可以在 TP6 中使用 TP5 的跳轉(zhuǎn)提示操作,這篇文章主要介紹了ThinkPHP 6 添加跳轉(zhuǎn)提示擴(kuò)展 liliuwei/thinkphp-jump,需要的朋友可以參考下
    2023-08-08
  • PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總

    PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總

    一般情況下,很少會(huì)用php去執(zhí)行l(wèi)inux命令,不過特殊情況下,你也許會(huì)用到這些函數(shù)。以前我知道有二個(gè)函數(shù)可以執(zhí)行l(wèi)inux命令,一個(gè)是exec,一個(gè)是shell_exec,通過本文給大家介紹PHP執(zhí)行l(wèi)inux命令常用函數(shù)匯總,需要的朋友參考下
    2016-02-02
  • PHP嵌套輸出緩沖代碼實(shí)例

    PHP嵌套輸出緩沖代碼實(shí)例

    這篇文章主要介紹了PHP嵌套輸出緩沖代碼實(shí)例,本文講解嵌套使用ob系列函數(shù)的實(shí)例,需要的朋友可以參考下
    2015-05-05
  • 比較好用的PHP防注入漏洞過濾函數(shù)代碼

    比較好用的PHP防注入漏洞過濾函數(shù)代碼

    PHP整站防注入程序,需要在公共文件中require_once本文件,因?yàn)楝F(xiàn)在網(wǎng)站被注入攻擊現(xiàn)象很嚴(yán)重,所以推薦大家使用
    2012-04-04

最新評論

桂阳县| 重庆市| 宁波市| 建湖县| 留坝县| 黄山市| 泰顺县| 库尔勒市| 镇宁| 景泰县| 石柱| 江油市| 沾化县| 涟水县| 卓资县| 鹤山市| 额尔古纳市| 肃北| 克东县| 盐亭县| 中方县| 桦南县| 视频| 平远县| 宜阳县| 驻马店市| 河北省| 巴马| 乐至县| 新昌县| 万全县| 九龙坡区| 子长县| 聊城市| 五寨县| 冕宁县| 日喀则市| 张家界市| 绍兴县| 綦江县| 闽清县|