博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP底层探索(二):一次请求的开始与结束
阅读量:4096 次
发布时间:2019-05-25

本文共 630 字,大约阅读时间需要 2 分钟。

PHP开始执行以后会经过两个主要阶段:

1.处理请求之前的开始阶段
2.请求之后的结束阶段

开始阶段有两个过程:

1)过程是模块初始化阶段(MINIT),在整个SAPI声明周期内,该过程只执行一次.
2)过程是模块激活阶段(RINIT),该过程发生在请求阶段,例如请求某页面,则在每次请求之前都会进行模块激活(RINIT请求开始).例如PHP注册了一些扩展模块,则在MITIT阶段会回调所有模块的初始化函数.模块在这个阶段可以进行一些初始化工作,例如注册常量,定义模块使用的类等等.

模块在是显示可以通过PHP_MINIT_FUNCTION() 函数来返回注册常量或类初始化操作

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

请求处理完成后就进入了结束阶段,一般脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段.和开始阶段对应,结束阶段也分两个环节

1,在请求结束后停用模块(RSHUWDOWN 对应 RINIT)
2,在SAPI声明周期结束时,关闭模块(MSHUTDOWN,对应MINIT)
PHP_RSHUTDOWN_FUNCTION

具体流程如图所示

这里写图片描述

你可能感兴趣的文章
Linux 线程信号量同步
查看>>
C++静态成员函数访问非静态成员的几种方法
查看>>
类中的静态成员函数访问非静态成员变量
查看>>
C++学习之普通函数指针与成员函数指针
查看>>
C++的静态成员函数指针
查看>>
Linux系统编程——线程池
查看>>
yfan.qiu linux硬链接与软链接
查看>>
Linux C++线程池实例
查看>>
shared_ptr简介以及常见问题
查看>>
c++11 你需要知道这些就够了
查看>>
c++11 你需要知道这些就够了
查看>>
shared_ptr的一些尴尬
查看>>
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
C++ 写时拷贝 2
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
单列模式-编写类ConfigManager读取属性文件
查看>>
java中float和double的区别
查看>>
Statement与PreparedStatement区别
查看>>