麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

PHP內核探索之解釋器的執行過程

2024-05-04 23:41:18
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP內核探索之解釋器的執行過程的相關資料,需要的朋友可以參考下
 

cli(Command Line Interface)即PHP的命令行模式,現在此SAPI是默認安裝的,我們在服務器上安裝完PHP之后,一般會生成一個可執行文件,假設此文件為/usr/local/bin/php ,那么我們在SHELL下可以用以下命令來執行一個PHP腳本:

 

復制代碼代碼如下:

/usr/local/bin/php -f test.php

 

以CLI SAPI為例來對php執行核心部分進行解析。CLI是php命令行模式,此SAPI是默認安裝的,在服務器端安裝過PHP后,生成以一個可執行文件,可以在shell中調用PHP命令來執行。

 

復制代碼代碼如下:

PHP -f XX.php

 

執行流程:

解析命令行參數;

初始化環境;

編譯執行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_compile_file編譯參數指定的php腳本文件,該函數會返回一個zend_op_array的結構指針;

zend_execute傳入的參數是zend_compile_file的返回值,就開始執行opcode了。

這兩個函數是Zend API,是一個函數指針,在引擎初始化的時候回賦值具體的方法。

ps.:那為什么這兩個Zend API是函數指針呢?

在引擎初始化的時候,zend_execute和zend_compile_file會在引擎初始化的時候指向默認的方法。我們可以在編譯和執行重寫函數的指向,這樣就為我們擴展引擎時留下了鉤子。例如:vld將zend_execute和zend_compile_file指向自己對原始函數封裝后的函數,添加了opcode信息的輸出。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99riav国产在线观看 | 麻豆小视频在线观看 | 久久久一区二区三区精品 | 免费a级观看 | 国产成人精品无人区一区 | 免费a级黄色毛片 | 手机视频在线播放 | 国产papa| 天天看天天摸天天操 | av在线免费看网址 | 羞羞漫画无遮挡观看 | 毛片av网址| 国产影院在线观看 | 视频一区国产精品 | 久久久久久久久久亚洲 | 爽爽淫人综合网网站 | 欧美成人精品一区 | 精品国产一区二区在线观看 | 视频二区国产 | 午夜视频久久久 | 泰剧19禁啪啪无遮挡大尺度 | 意大利av在线 | 精品国产一区二区亚洲人成毛片 | 久久精品国产99久久6动漫亮点 | 国产一级桃视频播放 | 日本爽快片100色毛片视频 | 国产一区二区免费在线观看 | 亚洲极色 | 欧美日韩在线免费观看 | 亚欧美一区二区 | 国产一区网址 | 91小视频在线观看免费版高清 | 久久精品国产一区二区电影 | 亚洲av一级毛片特黄大片 | av观看国产| 国产一级一片免费播放 | 精品国产91久久久久久 | 在线观看一区二区三区四区 | 一本色道精品久久一区二区三区 | 免费a级片视频 | 精品国产高清一区二区三区 |