[李景山php] php 拓展模块 函数意义

来源:互联网 发布:php二维数组定义 编辑:程序博客网 时间:2024/06/14 03:02

PHP开始执行以后会经过两个主要的阶段:处理请求之前的开始阶段和请求之后的结束阶段。

请求开始阶段:
第一个过程是模块初始化阶段(MINIT),在整个SAPI生命周期内(例如Apache启动以后的整个声明周期内或者命令行程序整个执行过程中),该过程只进行一次。
第二个过程是模块激活阶段(RINIT),该过程发生在请求阶段,例如通过curl请求某个页面,则在每次请求之前都会进行模块激活(RINIT请求开始)。例如PHP注册了一些扩展模块,则在MINIT阶段会回调所有模块的MINIT函数。模块在这个阶段可以进行一些初始化工作,例如注册常量,定义模块使用的类等等。模块在实现时可以通过如下宏来实现这些回调函数:

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

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

PHP_RINIT_FUNCTION(myphpextension){     //例如记录请求开始时间     //随后在请求结束的时候     return SUCCESS;}
 请求处理完后进入了结束阶段,一般脚本执行末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段。和开始阶段对应,结束阶段也分为两个环节,一个在请求结束后停用模块(RSHUTDOWN,对应RINIT),一个在SAPI生命周期结束(Web服务器退出或者命令行脚本执行完毕退出)时关闭模块(MSHUTDOWN,对应MINIT).
PHP_RSHUTDOWN_FUNCTION(myphpextension){     //例如记录请求结束时间,并把相应的信息写入到日志文件中。     return SUCCESS;}

小小的总结一下:

启动php的执行顺序:

1 Mode Init —–》启动php 总 模块 —–》 对应函数 PHP_MINIT_FUNCTION(myphpextension)
2 Run Init —–》启动php 运行 模块 —–》 对应函数 PHP_RINIT_FUNCTION(myphpextension)
3 执行用户定义的任务
4 Run shutdown —–》善后php 运行 模块 —–》 对应函数 PHP_RSHUTDOWN_FUNCTION(myphpextension)
5 Mode shutdown —–》善后php 总 模块 —–》 对应函数 PHP_MSHUTDOWN_FUNCTION(myphpextension)

0 0
原创粉丝点击