一张游览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

相关文章
相关标签/搜索