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