PHP生命周期

一个PHP实例,无论是从init脚本中调用的,还是从命令行启动的,都会依次经过module init、request init、request shutdown、module shutdown四个过程,当然,这中间还会执行脚本自己的逻辑,两种init和两种shutdown各会执行多少次,各自的执行频率有多少,取决于php用什么sapi与宿主通信的,最常见的四种启动PHP的方式如下:

1、直接cli/cgi模式调用

2、多进程模块

3、多线程模块

4、嵌入式,在自己的c程序中调用 zend engine

sapi(服务器抽象化程序接口)提供一个接口,使得PHP可以和其他应用进行交互数据,也就是说,PHP能够和其他程序如apache交互就是这个接口起作用

在命令行输入:php -f test.php时,会发生如下过程

1、注册常量或者类等初始化工作

2、请求test.php文件,当请求到达后,php会初始化执行脚本的基本环境,例如创建一个执行环境,包括保存PHP运行过程中变量名称和变量值内容的符号表,以及当前所有的函数以及类等信息的符号表,然后PHP会调用所有模块的rinit函数,在这个阶段各个模块也可以执行一些相关的操作。

3、执行test.php阶段,主要是把PHP文件编辑成opcodes,然后在PHP虚拟机下执行

4、请求处理完后进入结束阶段,一般脚本执行到末尾exit等函数,和开始阶段对应,结束阶段也分为两个环节,一个在请求结束后,一个在sapi生命周期结束时

以上摘自《PHP核心技术和最佳实践》

原文地址:https://www.cnblogs.com/weiluoyan/p/7603160.html