本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php中的內(nèi)核組成以及php代碼執(zhí)行過程的介紹,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。
1、PHP的內(nèi)核組成
php總共包括3個(gè)模塊:php內(nèi)核,zend引擎,PHP擴(kuò)展層
1.1 php內(nèi)核:用于處理請求,文件流,錯(cuò)誤處理等相關(guān)處理。
1.2. zend引擎:將源文件轉(zhuǎn)換成機(jī)器語言,然后在zend 虛擬機(jī)上運(yùn)行
zend 整體由兩個(gè)部分組成:
編譯器:負(fù)責(zé)將php代碼編譯為可執(zhí)行的opcodes
執(zhí)行器:負(fù)責(zé)將執(zhí)行編譯器輸出的opcodes,也就是執(zhí)行php腳本中編寫的代碼邏輯
1.3.擴(kuò)展
擴(kuò)展層是一組函數(shù)、類庫和流,php使用它們來執(zhí)行一些特定的操作,比如安裝php_openssl擴(kuò)展來使用 open ssl函數(shù),常見的擴(kuò)展有,
已安裝擴(kuò)展在php安裝路徑ext目錄下。
2、PHP代碼執(zhí)行過程
PHP 的大致的執(zhí)行過程如下:
我們寫的php代碼,是不能夠直接執(zhí)行的,要先經(jīng)過詞法、語法分析器,然后再經(jīng)過編譯器編譯,看到這里可能會想,逗我呢這是?php不是腳本語言么?怎么還要還要像C/C++那樣經(jīng)過編譯?其實(shí)嚴(yán)格來說php算是編譯語言,經(jīng)過詞法語法分析后,再編譯,編譯成了opcode中間碼,然后再由zend執(zhí)行引擎執(zhí)行,那么從這點(diǎn)來講,php是先編譯后執(zhí)行的,這點(diǎn)跟java很像,但java是把代碼(.java)編譯成字節(jié)碼,然后再由jvm去執(zhí)行的。
相關(guān)推薦:
PHP內(nèi)核解密系列:zend_execute的執(zhí)行過程
PHP內(nèi)核探索之解釋器的執(zhí)行過程
以上就是php中的內(nèi)核組成以及php代碼執(zhí)行過程的介紹的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選