久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP內(nèi)核探索 —— Zend引擎:Zend引擎是PHP實(shí)現(xiàn)的核心

瀏覽:4日期:2022-09-16 11:22:29

相信很多人都聽說(shuō)過(guò) Zend Engine 這個(gè)名詞,也有很多人知道 Zend Engine 就是 PHP 語(yǔ)言的核心,但若要問(wèn)一句:Zend Engine 到底存在于何處?或者說(shuō),Zend Engine 究竟是在什么時(shí)候怎么發(fā)揮作用讓 PHP 源碼輸出我們想要的東西的?

Zend引擎是PHP實(shí)現(xiàn)的核心,提供了語(yǔ)言實(shí)現(xiàn)上的基礎(chǔ)設(shè)施。例如:PHP的語(yǔ)法實(shí)現(xiàn),腳本的編譯運(yùn)行環(huán)境, 擴(kuò)展機(jī)制以及內(nèi)存管理等,當(dāng)然這里的PHP指的是官方的PHP實(shí)現(xiàn)(除了官方的實(shí)現(xiàn), 目前比較知名的有facebook的hiphop實(shí)現(xiàn),不過(guò)到目前為止,PHP還沒(méi)有一個(gè)標(biāo)準(zhǔn)的語(yǔ)言規(guī)范),而PHP則提供了請(qǐng)求處理和其他Web服務(wù)器的接口(SAPI)。

要理解 Zend Engine 的作用,就不能不理解為什么會(huì)出現(xiàn),PHP 為什么需要 Zend Engine, Zend Engine 的出現(xiàn)為 PHP 解決了什么問(wèn)題。PHP 發(fā)展到 3.0 版本的時(shí)候,此時(shí) PHP 已經(jīng)很普及了。“在 PHP3 的頂峰,Internet 上 10% 的 web 服務(wù)器上都安裝了它”,PHP Manual 如是說(shuō)。廣泛的應(yīng)用必然帶來(lái)更高的要求。但此時(shí)的 PHP3 卻有些力不從心了,這主要是因?yàn)?PHP3 采用的是邊解釋邊執(zhí)行的運(yùn)行方式,運(yùn)行效率很受其影響。其次,代碼整體耦合度比較高,可擴(kuò)展性也不夠好,不利于應(yīng)付各種各樣需求。因此,此時(shí)在 PHP 界里已經(jīng)有點(diǎn)中流砥柱作用的 Zeev Suraski 和 Andi Gutmans 決定重寫代碼以解決這兩個(gè)問(wèn)題。最終他們倆把該項(xiàng)技術(shù)的核心引擎命名為 Zend Engine,Zend 的意思即為 Zeev + Andi 。

Zend Engine 最主要的特性就是把 PHP 的邊解釋邊執(zhí)行的運(yùn)行方式改為先進(jìn)行預(yù)編譯(Compile),然后再執(zhí)行(Execute)。這兩者的分開給 PHP 帶來(lái)了革命性的變化:執(zhí)行效率大幅提高;由于實(shí)行了功能分離,降低了模塊間耦合度,可擴(kuò)展性也大大增強(qiáng)。此時(shí) PHP 已經(jīng)能很方便的應(yīng)付各種各樣的 BT 需求了,而伴隨 PHP 4.4.x ―可能是 PHP4 系列的最后一個(gè)分支―的發(fā)布,PHP 的大部分開發(fā)人員已經(jīng)將注意力放在了 PHP5 或者 PHP6 上面,以后發(fā)布的基本上就是一些 Bug Fix Release。可以說(shuō)第一代的 Zend Engine 是已經(jīng)在站最后一班崗了。

2004 年 7 月,PHP 5 發(fā)布,支持 PHP5 的是 Zend Engine 2.0 版本。這個(gè)版本主要是對(duì) PHP 的 OO 功能進(jìn)行了改進(jìn)(我沒(méi)有提集成 SQLite、PDO 等特性是因?yàn)槲覀儸F(xiàn)在談的主要是 Zend Engine 而非 PHP)。核心執(zhí)行方式(非 OO 部分)較PHP4 的1.0 版本變動(dòng)不大,所以 PHP5 純粹的執(zhí)行速度相對(duì)于 PHP4 沒(méi)有大的提高。而預(yù)計(jì)將于本月中旬發(fā)布的 PHP 5.1 版本則會(huì)攜帶 Zend Engine 2.1 版本,這個(gè)版本將提供新的執(zhí)行方式,執(zhí)行速度也會(huì)快上許多,至少要比 PHP5.0 相對(duì)于 PHP4.x 的差別要大很多,所以,PHP 5.1 將會(huì)是一個(gè)很了很令人期待的版本。

但并非 PHP5 系列的 Zend Engine 2 就完美無(wú)缺了。前面已經(jīng)提到過(guò),Zend Engine 將代碼分成編譯和執(zhí)行兩大部分。一般情況下,我們的代碼完成以后就很少再去改變了。但執(zhí)行時(shí) PHP 卻不得不還得一次又一次的重復(fù)編譯,這根本就是毫無(wú)必要的。而且通常情況下,編譯的所花費(fèi)的時(shí)間并不比執(zhí)行少多少,說(shuō)是五五開并不為過(guò),因此這極大的浪費(fèi)了機(jī)器的 CPU。基于 Zend Engine 3.0 的 PHP6 將試圖解決這個(gè)問(wèn)題。除此之外,目前的 PHP 對(duì)多字節(jié)的字符處理也是 PHP 的一大致命缺陷。這在人們聯(lián)系日益國(guó)際化的今天幾乎是不可忍受的。而無(wú)數(shù)人在抨擊 PHP 或 比較 ASP 等同類語(yǔ)言時(shí)總是不可避免的要提到這一點(diǎn)。同時(shí)受到 IBM 方面的壓力,PHP6 也將會(huì)把對(duì)多字節(jié)字符的處理提到首要日程。這在 PHP6 的 Dev 版本中已經(jīng)得到體現(xiàn)。

目前PHP的實(shí)現(xiàn)和Zend引擎之間的關(guān)系非常緊密,甚至有些過(guò)于緊密了,例如很多PHP擴(kuò)展都是使用的Zend API, 而Zend正是PHP語(yǔ)言本身的實(shí)現(xiàn),PHP只是使用Zend這個(gè)內(nèi)核來(lái)構(gòu)建PHP語(yǔ)言的,而PHP擴(kuò)展大都使用Zend API, 這就導(dǎo)致PHP的很多擴(kuò)展和Zend引擎耦合在一起了,后來(lái)才有PHP核心開發(fā)者就提出將這種耦合解開的建議。

目前PHP的受歡迎程度是毋庸置疑的,但凡流行的語(yǔ)言通常都會(huì)出現(xiàn)這個(gè)語(yǔ)言的其他實(shí)現(xiàn)版本, 這在Java社區(qū)里就非常明顯,目前已經(jīng)有非常多基于JVM的語(yǔ)言了,例如IBM的Project Zero就實(shí)現(xiàn)了一個(gè)基于JVM的PHP實(shí)現(xiàn), .NET也有類似的實(shí)現(xiàn),通常他們這樣做的原因無(wú)非是因?yàn)椋核麄兿矚g這個(gè)語(yǔ)言,但又不想放棄原有的平臺(tái), 或者對(duì)現(xiàn)有的語(yǔ)言實(shí)現(xiàn)不滿意,處于性能或者語(yǔ)言特性等(HipHop就是這樣誕生的)。

很多腳本語(yǔ)言中都會(huì)有語(yǔ)言擴(kuò)展機(jī)制,PHP中的擴(kuò)展通常是通過(guò)Pear庫(kù)或者原生擴(kuò)展,在Ruby中則這兩者的界限不是很明顯, 他們甚至?xí)峁﹥商讓?shí)現(xiàn),一個(gè)主要用于在無(wú)法編譯的環(huán)境下使用,而在合適的環(huán)境則使用C實(shí)現(xiàn)的原生擴(kuò)展, 這樣在效率和可移植性上都可以保證。目前這些為PHP編寫的擴(kuò)展通常都無(wú)法在其他的PHP實(shí)現(xiàn)中實(shí)現(xiàn)重用, HipHop的做法是對(duì)最為流行的擴(kuò)展進(jìn)行重寫。如果PHP擴(kuò)展能和ZendAPI解耦,則在其他語(yǔ)言中重用這些擴(kuò)展也將更加容易了。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 最近免费中文字幕在线视频2 | 第四色影音先锋 | 亚洲欧美中文日韩在线v日本 | 国产乱码精品一区二区三区中文 | 亚洲美女视频 | 成人性大片免费观看网站 | 日韩视频一区二区三区 | 国产视频久久久久久 | 久久一区| 亚洲久草 | 成人精品视频在线观看 | 看真人视频a级毛片 | 欧美激情啪啪 | 日韩在线观看三区 | 91.成人天堂一区 | 国产精品成人国产乱一区 | 欧美福利在线观看 | 五月激情综合婷婷 | 国产一级毛片电影 | 欧美日韩亚洲国产综合 | 国产成人高清视频 | 黄版视频在线观看 | 狠狠影院 | 国产精品美女久久久久久久久久久 | 国内精品视频一区二区三区 | 国产精品久久久久影院色老大 | 成人精品网站在线观看 | 91天堂| 欧美国产一区二区 | 成人一区二区在线 | 精品国产一区二区三区久久影院 | а天堂中文最新一区二区三区 | 国产91网址 | 成人免费视频观看 | 日日操天天爽 | 国产精品三级在线 | 久久成人精品一区二区三区 | 在线中文av | 久草天堂 | 国产精品夜色一区二区三区 | 亚洲高清视频在线 |