php核心探索筆記 直譯器的執行過程

2021-07-08 21:02:55 字數 496 閱讀 2198

以cli sapi為例來對php執行核心部分進行解析。cli是php命令列模式,此sapi是預設安裝的,在伺服器端安裝過php後,生成以乙個可執行檔案,可以在shell中呼叫php命令來執行。

php -f xx.php
執行流程:

在第3個階段中,如何執行php指令碼的:

通過呼叫php_execute_script( handle_file )來完成第三階段,該函式最終會呼叫zend_execute_scipts( … ) ,這個函式是乙個可變參函式,可以一次執行多個php指令碼。

在zend_execut_scripts(…..)函式中核心呼叫了(zend_compile_file)( compile_file ), (*zend_execute)( zend_op_array )這兩個函式;

這兩個函式是zend api,是乙個函式指標,在引擎初始化的時候回賦值具體的方法。

ps. 那為什麼這兩個zend api是函式指標呢?

PHP核心探索之直譯器的執行過程

cli command line inte ce 即php的命令列模式,現在此sapi是默www.cppcns.com認安裝的,我們在伺服器上安裝完php之後www.cppcns.com,一般會生成乙個可執行檔案,假設此檔案為 usr local bin php 那麼我們在shell下可以用以下命令...

PHP核心探索筆記 函式

函式的定義是乙個將函式名註冊到函式列表的過程 1.詞法分析 function將會生成t function標記 2.語法分析 3.生成中間 生成的中間 為 zend declare function 根據這個中間 及運算元對應的op type。我們可以找到中間 的執行函式為 zend declare ...

PHP直譯器引擎執行流程

這裡將介紹引擎內部執行乙個php指令碼的流程,以cli sapi為例子來對流程中核心的部分做簡單介紹,省去一些初始化及清理操作。cli command line inte ce 即php的命令列模式,現在此sapi是預設安裝的,我們在伺服器上安裝完php之後,一般會生成乙個可執行檔案,假設此檔案為 ...