PHP 的生命周期 (Interview)

之前面试官问我的一个问题,当时没有回答上,只是乱讲了一团,阅读书籍后才明白 PHP 的整个生命周期原来是这样的。

PHP 的生命周期 (Interview)

主要四个过程
Module init -> Request init -> Request shutdown -> Model shutdown
在命令模式运行一个 PHP 脚本主要流程是以下

PHP 生命周期图

1) Call each extension ‘s MINIT

1
2
3
4
5
6
7
8
9
/**
这个过程在拓展被载入时调用
**/

PHP_MINIT_FUNCTION(myext)
{
// 注册常量或者类等初始化操作
return SUCCESS
}

2) Request test.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
PHP 会初始化执行脚本的基本环境
包含保存在 PHP 运行过程中变量名称和变量值内容的符号表,
以及当前所有的函数以及类等信息的符号表。
然后 PHP 调用所有模块的 RINIT 函数
**/`

PHP_RINNIT_FUNCTION(myext)
{
//例如记录开始时间
//随后在请求结束的时候记录结束时间
//这样就能记录下请求所花费的时间

return SUCCESS;
}

3) Execute test.php

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

4) Call each extension ‘s RSHUTDOWN

请求处理完成后进入结束阶段,一般脚本执行到行尾或者通过 exit() 或者 die() 函数,PHP 都将进入结束阶段。同开始阶段一样,结束阶段也有连个环节

  1. 请求结束 (RSHUTDOWN)
  2. SAPI 生命周期结束时 (MSHUTDOWN)
1
2
3
4
5
6
7
8
9
10
11
12
PHP_RSHUTDOWN_FUNCTION(myext)
{
//例如记录请求结束时间,并把相应的信息写入到日志文件中
return SUCCESS;
}

PHP_MSHUTDOWN_FUNCTION(myext)
{
//注销一些持久化资源

return SUCCESS;
}
文章对你有用?给博主一个支持
0%