搜尋
首頁後端開發PHP7淺述PHP7底層設計01-PHP7語言執行原理

PHP作為一種解釋型語言,不同於編譯型語言編譯結果即為目前CPU體系的指令,PHP原始碼只有編譯成opcode才能夠被zend虛擬機器直接執行。

以下就簡單描述PHP7語言執行原理:

1.  原始碼首先利用Re2c實現的詞法分析器進行詞法分析,將原始程式碼切割為多個字串單元,分割後的字串稱為Token;

2.  基於Bison實現的語法分析器將Token和符合BNF文法規則的程式碼產生抽象語法樹;

3.抽象語法樹(AST)編譯生成opcode;

 淺述PHP7底層設計01-PHP7語言執行原理

我們常常討論的解釋型語言執行效率較低,原因在於PHP執行過程中要多了翻譯為opcode的過程。

不僅如此,與常駐記憶體的Java等語言不同,PHP程式碼執行過後,記憶體會馬上釋放,基本上所有資料都會在此時銷毀(只有極少數資料會快取)。

這種執行機制的優點在於有效避免記憶體洩漏,記憶體回收機制更簡單,缺點就是每個PHP請求都得重複執行請求-翻譯-執行的過程。

備註:記憶體洩漏(Memory Leak)是指程式中己動態分配的堆記憶體因某些原因程式未釋放或無法釋放,造成系統記憶體的浪費,導致程式運作速度減慢甚至系統崩潰等嚴重後果。

為了彌補不是常駐內存的缺失,引入opcode緩存,zend虛擬機會將第一次執行的PHP代碼編譯結果緩存到內存或者硬碟中,當下次執行該部分代碼時直接讀取緩存,一定程度上可以提高PHP運轉速度。

參考資料

1.  陳雷,PHP7底層設計與原始碼實現

2.  列旭松,陳文,PHP核心技術與最佳實踐

以上是淺述PHP7底層設計01-PHP7語言執行原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器