深入了解PHP【生命周期】
来源:互联网 发布:数据存储安全 编辑:程序博客网 时间:2024/06/05 17:10
<?php echo "hello world!";
这么一段简单的代码背后,发生了什么?
今天先从PHP 的生命周期开始聊吧?
先了解一下过程:
- 随着apache 的启动,PHP执行相关的进程
- PHP是通过mod_php5.so模块来和apache相关联的也就是sapi
- PHP总共三个模块:内核、zend引擎、扩展层
- PHP内核主要是处理请求、文件流、错误处理等等
- Zend引擎是负责将源文件翻译成机器语言,在虚拟机上运行
- 扩展层是就是我们用过的函数,类库等,比如pdo mysql 啊什么的
- 当zend执行扩展时,先将控制权交给扩展,等处理结束后在返还
zend将结果返回给php 的内核 在通过sapi 输出带浏览器上
以上只是一个大概,接下来我们深入探讨一个请求进入,背后做了那些事
深入探讨:
第一步当你打开了Apache,php的解释器也就启动了
PHP的启动过程主要是两个过程
第一步:
启动apache后,php解释器也就启动了
PHP开始调用各个扩展的MINIT**(模块初始化)**方法,将这些扩展切换到可运行状态,(php.ini 文件中开启的扩展 :ps 这就是为什么这里一些 扩展没设置好,apache启动不了的原因)
第二步当有一个请求时··SAPI层将控制权交给了PHP层,于是PHP设置了用于回复本次请求所需要的环境变量,同时还建立了一个变量表,用来存放执行过程中产生的变量名 和值
- PHP调用各个模块的RINIT方法:请求初始化 用于初始化模块的一些全局变量如session 模块的$_SESSION变量
- RINIT方法是一I个准备过程,在执行前 就会启动
PHP关闭过程主要是两个过程
第一步:
13. 程序结束完毕(或使用exit die())PHP 就会启动清理程序。他会按照顺序调用模块的RSHUTDOWN方法
14. RSHUTDOWN 用于清除程序运行时产生的符号表,即对每个变来那个调用unset函数
第二步:
当所有请求结束后SAPI也准备关闭了,PHP开始执行第二部步
1.PHP开始调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会
这样,整个PHP生命周期就结束了。要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”。
最后盗用一张图来描述整个过程
如果有说的不对的地方 请指正:p
阅读全文
0 0
- 深入了解PHP【生命周期】
- 深入了解Java类型生命周期
- 深入了解Activity-生命周期
- 深入了解php.ini
- 深入了解ASP.net 的生命周期
- 深入了解php底层机制(-)
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解php底层机制
- 深入了解PHP【工作原理】
- 设计模式之禅16
- day7_类的重要方法和socket基础
- 菱形和水仙花数
- python 3.x 字典的11种方法
- Codeforces --- Mahmoud and Ehab and the MEX
- 深入了解PHP【生命周期】
- Item 11:在赋值操作符中处理自我赋值【effective C++读书笔记】
- VisualSVN Server v3.7
- Android 退出登录功能
- 二进制数中返回1的个数的几种方法
- Codeforce 862B Mahmoud and Ehab and the bipartiteness (二分图染色 + 链式前向星)
- 大整数的乘法
- Codeforces 862C
- 基于Spring session 和 redis 的session共享问题