PHP架构
本文收集/翻译了关于PHP架构、内核函数及运行原理方面的链接, PHP内核代码运行过程 激活和运行PHP解释器有几个关键步骤: 当一个应用程序想启动一个PHP解释器,首先调用php_module_startup。 这个函数是解释器的主开关。 它激活注册过的SAPI,初始化输出缓
本文收集/翻译了关于PHP架构、内核函数及运行原理方面的链接,
PHP内核代码运行过程
激活和运行PHP解释器有几个关键步骤:
当一个应用程序想启动一个PHP解释器,首先调用php_module_startup。
这个函数是解释器的主开关。
它激活注册过的SAPI,初始化输出缓存系统,启动Zend引擎,
读入php.ini文件,启用配置,准备好处理第一次请求。
核心模块使用到的一些重要函数有:
* php_module_startup - PHP主入口函数.
* php_startup_extensions - 运行所有已注册的扩展的初始化函数.
* php_output_startup - 启动输出系统.
* php_request_startup - 是请求开始阶段的主函数,每次请求,SAPI函数会向下调用该函数,然后该函数再向下调用Zend引擎来进行初始化,以及调用所有已注册模块的请求启动函数.
* php_output_activate - 激活输出系统,来使用SAPI相关的输出函数.
* php_init_config - 读取php.ini文件并启用配置
* php_request_shutdown - 主要负责销毁每个请求所占用的资源.
* php_end_ob_buffers - 用来刷新输出缓存,如果输出缓存被启用了的话.
* php_module_shutdown - 这个是PHP的主关闭函数,触发解释器所有其余的关闭(shutdown)函数.
上述中的SAPI是PHP提供给web服务器及其他应用的开放接口,可参考:
http://en.wikipedia.org/wiki/Server_Application_Programming_Interface
http://blog.areawebsolutions.com/php-architecture-the-php-core.html/comment-page-1
PHP架构图:
by iefreer