PHP的生命周期

PHP 有两种运行模式,WEB 模式和 CLI(命令行)模式。当我们在终端敲入 PHP 这个命令的时候,使用的是 CLI 模式; 当使用 Nginx 或者别 Web 服务器作为宿主处理一个到来的请求时,会调用 PHP 运行,此时使用的是 WEB 模式。

当我们请求一个 PHP 文件时,PHP 为了完成这次请求,会发生5个阶段的生命周期切换:

  1. 模块初始化(MINIT),即调用 php.ini 中指明的扩展的初始化函数进行初始化工作,如 mysql 扩展;
  2. 请求初始化(RINIT),即初始化为执行本次脚本所需要的变量名称和变量值内容的符号表,如$_SESSION变量;
  3. 执行该 PHP 脚本;
  4. 请求处理完成(Request Shutdown),按顺序调用各个模块的 RSHUTDOWN 方法,对每个变量调用 unset 函数,如 unset $_SESSION 变量;
  5. 关闭模块(Module Shutdown), PHP 调用每个扩展的 MSHUTDOWN 方法,这是各个模块最后一次释放内存的机会。这意味着没有下一个请求了;

WEB 模式和 CLI(命令行)模式很相似,区别是:CLI 模式会在每次脚本执行经历完整的 5 个周期,因为你脚本执行完不会有下一个请求;而 WEB 模式为了应对并发,可能采用多线程,因此生命周期 1 和 5 有可能只执行一次,下次请求到来时重复 2 – 4 的生命周期,这样就节省了系统模块初始化所带来的开销。

 

Via: http://blog.csdn.net/hguisu/article/details/7377520

0 条评论
发表一条评论