這篇文章給大家分享的是有關(guān)PHP中底層語(yǔ)言是什么的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
扶溝網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
PHP的底層語(yǔ)言是C語(yǔ)言 C語(yǔ)言是編譯型 語(yǔ)言。
編譯型語(yǔ)言:程序在執(zhí)行之前需要一個(gè)專(zhuān)門(mén)的編譯過(guò)程,把程序編譯成 為機(jī)器語(yǔ)言的文件,運(yùn)行時(shí)不需要重新翻譯,直接使用編譯的結(jié)果就行了。程序執(zhí)行效率高,依賴(lài)編譯器,跨平臺(tái)性差些
----------編譯型語(yǔ)言_百度百科
那么PHP是怎么變成解釋型語(yǔ)言的呢?
我用processon做了張圖 以后慢慢再持續(xù)填坑
圖片如果不清晰可以看原圖
簡(jiǎn)單說(shuō)明下圖片的過(guò)程
一 先不考慮 CLI和FPM等流程 C語(yǔ)言通過(guò) open_file_sanning函數(shù)解析到php后綴的文件
二 調(diào)用編譯函數(shù)zend_compile_file()來(lái)進(jìn)行編譯。 這個(gè)函數(shù)的具體實(shí)現(xiàn)其實(shí)是包括兩個(gè)主要過(guò)程的:詞法分析(Lex實(shí)現(xiàn)),語(yǔ)法分析(Yacc實(shí)現(xiàn))。當(dāng)執(zhí)行完這個(gè)函數(shù)之后:php腳本的編譯就算結(jié)束了。 這個(gè)函數(shù)的輸入是:php腳本文件,而輸出則是op_array.簡(jiǎn)單一點(diǎn)說(shuō):編譯過(guò)程就是把腳本給解析成一條條php虛擬機(jī)可以處理的指令,而op_array就是這些指令做成的一個(gè)array而已(這很類(lèi)似一些編譯型語(yǔ)言編譯產(chǎn)生的匯編代碼了,也是一條條的命令
三 VM虛擬機(jī)調(diào)用zend_execute()函數(shù)來(lái)執(zhí)行。該函數(shù)的輸入就是上邊編譯階段產(chǎn)生的op_array,在這里他會(huì)解析每條命令并進(jìn)行處理。 在PHP7.4.5中op命令一共有將近200條所以它需要處理這些命令。每條命令都是有對(duì)應(yīng)的處理器來(lái)進(jìn)行處理的。zend虛擬擬機(jī)會(huì)依據(jù)op_array中各條命令的類(lèi)型來(lái)分發(fā)給響應(yīng)的處理器來(lái)進(jìn)行處理。這里的處理器是 zend虛擬機(jī)的處理器。不是CPU
Zend虛擬機(jī) 處理器其實(shí)是處理op命令的邏輯。其可以以函數(shù)的形式存在,也可能是以邏輯段的方式存在,這取決于命令的分發(fā)方式
Zend 虛擬機(jī)中分發(fā)命令的機(jī)制有三種:CALL, SWITCH, 和GOTO這三種類(lèi)型. switch和goto都是在zend_execute()這個(gè)函數(shù)中有對(duì)應(yīng)的邏輯段,直接執(zhí)行就可以了。而call是在zend_execute()這個(gè)函數(shù)中執(zhí)行函數(shù)調(diào)用。
你可以發(fā)現(xiàn)PHP代碼其實(shí)跑在了 zend vm虛擬機(jī)里 沒(méi)有直接運(yùn)行在CPU中
而 PHP8 中JIT的出現(xiàn) 可以讓部分代碼匯編成 機(jī)器碼 跑在CPU中 關(guān)于這部分可以參考 @rhett文章《PHP JIT 技術(shù)詳解》做的分析。
感謝各位的閱讀!關(guān)于“PHP中底層語(yǔ)言是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
文章題目:PHP中底層語(yǔ)言是什么
文章地址:http://chinadenli.net/article12/pododc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、App設(shè)計(jì)、網(wǎng)站策劃、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)