国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁(yè) > 營(yíng)銷資訊 > 網(wǎng)站運(yùn)營(yíng) > PHP架構(gòu)入門你了解么

PHP架構(gòu)入門你了解么

時(shí)間:2023-05-29 03:30:01 | 來源:網(wǎng)站運(yùn)營(yíng)

時(shí)間:2023-05-29 03:30:01 來源:網(wǎng)站運(yùn)營(yíng)

PHP架構(gòu)入門你了解么:最早接觸到PHP是在去年想做個(gè)人網(wǎng)站的時(shí)候,那時(shí)候也接觸并搭建了WordPress主題,Discuz論壇,織夢(mèng)等內(nèi)容管理系統(tǒng)(CMS,Content Management System)。而這些框架或者產(chǎn)品都是用PHP做的,從而可以看出PHP在特定領(lǐng)域內(nèi)還是發(fā)揮了大的作用并得到追隨。

“世界上最好的語(yǔ)言”也被作為一個(gè)梗在程序員圈子里傳播。對(duì)于開發(fā)人員來說,語(yǔ)言相比業(yè)務(wù)而言是次要的(當(dāng)然,如果你不想做開發(fā),而是想當(dāng)計(jì)算機(jī)科學(xué)家或者研究編程語(yǔ)言,那這句話就不適合你)。業(yè)務(wù)在很大程度上左右了你工作中的開發(fā)語(yǔ)言,說起PHP,很多人會(huì)搬來Java這位業(yè)界老大,如果非要站在JAVA這邊并用欣賞的眼光來看PHP,PHP相比Java的很顯著優(yōu)勢(shì)之一就是快,不是性能的快,而是上手的快,開發(fā)的快,上線的快。跟前端的適當(dāng)耦合,語(yǔ)法的相對(duì)簡(jiǎn)易(相比而言的,也沒那么簡(jiǎn)單,畢竟也是一門優(yōu)秀的編程語(yǔ)言),都使得學(xué)習(xí)和開發(fā)的成本相比而言低了那么一些,對(duì)于許多商業(yè)的中小型項(xiàng)目來說,這個(gè)特點(diǎn)可是很誘人的。

而對(duì)于任何一門編程語(yǔ)言,都有必要理解它的設(shè)計(jì)原理和組成架構(gòu),在宏觀上對(duì)它進(jìn)行把握,才有真正掌握甚至精通這門語(yǔ)言的可能。接下來我們開始進(jìn)入主題。先看下PHP的一個(gè)結(jié)構(gòu)圖:

我們可以看到PHP由大大小小的模塊組成,很明顯的解耦。我們具體看四個(gè)主要模塊:

Zend 引擎

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

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

  1. 詞法分析 Scanning,將 PHP 代碼轉(zhuǎn)換為語(yǔ)言片段(Tokens)。
  2. 解析 Parsing, 將 Tokens 轉(zhuǎn)換成簡(jiǎn)單而有意義的表達(dá)式。
  3. 編譯 Compilation,將表達(dá)式編譯成Opcode。
  4. 執(zhí)行 Execution,順序執(zhí)行Opcode,每次一條,以實(shí)現(xiàn)PHP代碼所表達(dá)的功能。
APC、Opchche 這些擴(kuò)展可以將Opcode緩存以加速PHP應(yīng)用的運(yùn)行速度,使用它們就可以在請(qǐng)求再次來臨時(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)庫(kù)都是通過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 可以不再考慮如何針對(duì)不同應(yīng)用進(jìn)行兼容,而應(yīng)用本身也可以針對(duì)自己的特點(diǎn)實(shí)現(xiàn)不同的處理方式。

上層應(yīng)用

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

下面是PHP的執(zhí)行過程:

可以看出,PHP腳本執(zhí)行之前都會(huì)去共享內(nèi)存中看是否有OpCode的緩存,如果有就直接加載然后被Zend引擎直接執(zhí)行,否則就需要先對(duì)腳本解析和編譯并且將編譯出的OpCode存入共享內(nèi)存,方便下次調(diào)用。

OpCode被執(zhí)行后會(huì)被SAPI進(jìn)行處理,然后和前端頁(yè)面整合壓縮后再由服務(wù)器(通常為Apache或者Nginx)發(fā)送給瀏覽器顯示在前端頁(yè)面。這就是PHP腳本執(zhí)行的過程。

很多人在剛接觸這個(gè)行業(yè)的時(shí)候或者是在遇到瓶頸期的時(shí)候,總會(huì)遇到一些問題,比如學(xué)了一段時(shí)間感覺沒有方向感,不知道該從那里入手去學(xué)習(xí),對(duì)此我整理了一些資料,需要的可以免費(fèi)分享給大家(點(diǎn)擊此處加入php高級(jí)交流群一起學(xué)習(xí)交流。)

如果喜歡我的文章,想與一群資深開發(fā)者一起交流學(xué)習(xí)的話,獲取更多相關(guān)大廠面試咨詢和指導(dǎo),歡迎加入我的學(xué)習(xí)交流群856460874一起學(xué)習(xí)成長(zhǎng)

關(guān)鍵詞:入門

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉