PHP的生命周期
php本身的生命周期是在命令行执行php test.php程序的生命周期(也就是cli)
整个过程如下:
执行php test.php
调用每个扩展的模块初始化程序
请求test.php程序
调用每个扩展的请求初始化程序
执行test.php程序
调用每个扩展的请求关闭程序
释放内存等清除工作
调用每个扩展的模块关闭程序
终止php
如果PHP运行在WEB服务器中,那么它的生命周期就会有些不同了,这里又要根据服务器的不同分为以下三种:
1、单进程
模块初始化
请求初始化
执行脚本
关闭请求
请求初始化
执行脚本
关闭请求
请求初始化
执行脚本
关闭请求
请求初始化
执行脚本
关闭请求
……
……
……
模块关闭
单进程的WEB服务器只对模块初始化一次,所有的页面请求都在其中
2、多进程
模块初始化 模块初始化 模块初始化 模块初始化
请求初始化 请求初始化 请求初始化 请求初始化
执行脚本 执行脚本 执行脚本 执行脚本
关闭请求 关闭请求 关闭请求 关闭请求
请求初始化 请求初始化 请求初始化 请求初始化
执行脚本 执行脚本 执行脚本 执行脚本
关闭请求 关闭请求 关闭请求 关闭请求
请求初始化 请求初始化 请求初始化 请求初始化
执行脚本 执行脚本 执行脚本 执行脚本
关闭请求 关闭请求 关闭请求 关闭请求
…… …… …… ……
关闭模块 关闭模块 关闭模块 关闭模块
多进程只是把单进程复制了多份,各个子进程间无法共享数据等。
3、多线程
模块初始化
请求初始化 请求初始化 请求初始化 请求初始化
执行脚本 执行脚本 执行脚本 执行脚本
关闭请求 关闭请求 关闭请求 关闭请求
关闭模块
全局变化可以在初始化的时候建立,并且只建立一次。