來源:不言 發(fā)布時間:2018-12-15 15:39:33 閱讀量:1308
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php中的內(nèi)核組成以及php代碼執(zhí)行過程的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
1、PHP的內(nèi)核組成
php總共包括3個模塊:php內(nèi)核,zend引擎,PHP擴(kuò)展層
1.1 php內(nèi)核:用于處理請求,文件流,錯誤處理等相關(guān)處理。
1.2. zend引擎:將源文件轉(zhuǎn)換成機(jī)器語言,然后在zend 虛擬機(jī)上運行
zend 整體由兩個部分組成:
編譯器:負(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)過編譯?其實嚴(yán)格來說php算是編譯語言,經(jīng)過詞法語法分析后,再編譯,編譯成了opcode中間碼,然后再由zend執(zhí)行引擎執(zhí)行,那么從這點來講,php是先編譯后執(zhí)行的,這點跟java很像,但java是把代碼(.java)編譯成字節(jié)碼,然后再由jvm去執(zhí)行的。