一張遊覽PHP內核迷宮的藏寶圖

PHP內核就像一個迷宮,假設沒有一個縱覽全局的圖,僅僅是面對當中的一個點,就會像進了迷宮同樣,走着走着就走到了死衚衕。在這個迷宮裏轉悠了很是久以後,近期獲得了一張PHP藏寶圖。而後看着這張圖去遊覽PHP內核,頓時認爲這個景區的面貌清晰了不少。廢話不說了,上圖:php

這張圖包含兩部分,分別相應PHP的啓動過程,和PHP處理每個請求的過程。PHP的啓動過程是一系列的初始化操做,創建處理請求時使用的各類全局變量:api

Apache啓動 app

 => sapi_startuppost

 => php_module_startup (PHP的主開關)code

 => php_output_startup進程

 => zend_startup (啓動Zend引擎)ip

 => register_ini_entriesio

 => php_ini_stream_wrappersclass

 => php_ini_register_extensions (啓動動態載入的擴展)stream

 => zend_startup_modules 

 => zend_startup_extensions


如下是處理每個請求時的流程:

php_handler

 => php_apche_request_ctor

 => zend_activate

 => zend_execute_scripts

 => zend_compile (語法分析、語義分析、生成oparray)

 => zend_execute (運行opcode)

 => zend_deactivate


進程退出時關掉zend、php:

sapi_shutdown

=> zend_shutdown

相關文章
相關標籤/搜索