PHP的生命周期
来源:互联网 发布:淘宝刷好评兼职交会费 编辑:程序博客网 时间:2024/05/16 17:23
出处:http://cc.ecjtu.net/posts/php-life-cycle
PHP脚本通过SAPI与宿主通信,常见的方式有单进程(CLI/CGI模式),多进程(通常编译为apache的模块来处理
PHP请求),多线程模式,还有一种Embed SAPI(PHP嵌入式,允许在C/C++语言中调用PHP/ZE提供的函数)。
无论通过哪种SAPI运行PHP都经过下面几个阶段:
1:模块初始化阶段(Module init)即调用每个拓展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行
一些模块所需变量的申请,内存分配等。
2:请求初始化阶段(Request init),即接受到客户端的请求后调用每个拓展的PHP_RINIT_FUNCTION中的方法,
初始化PHP脚本的执行环境。
3:执行PHP脚本
4:请求结束(Request Shutdown),这时候调用每个拓展的PHP_RSHUTDOWN_FUNCTION方法清理请求现场
,并且ZE开始回收变量和内存。
5:关闭模块(Module shutdown)Web服务器退出或者命令行脚本执行完毕退出会调用拓展源码中的
PHP_MSHUTDOWN_FUNCTION 方法。
下面的介绍摘自TIPI:
单进程SAPI生命周期
CLI/CGI模式的PHP属于单进程的SAPI模式。这类的请求在处理一次请求后就关闭。也就是只会经过如下几个环节: 开始 - 请求开始 - 请求关闭 - 结束 SAPI接口实现就完成了其生命周期。如图2.1所示:
多进程SAPI生命周期
通常PHP是编译为apache的一个模块来处理PHP请求。Apache一般会采用多进程模式, Apache启动后会
fork出多个子进程,每个进程的内存空间独立,每个子进程都会经过开始和结束环节, 不过每个进程的开始阶
段只在进程fork出来以来后进行,在整个进程的生命周期内可能会处理多个请求。 只有在Apache关闭或者进程
被结束之后才会进行关闭阶段,在这两个阶段之间会随着每个请求重复请求开始-请求关闭的环节。
如图2.2所示:
多线程的SAPI生命周期
多线程模式和多进程中的某个进程类似,不同的是在整个进程的生命周期内会并行的重复着 请求开始-请求关
闭的环节
Embed的SAPI生命周期
Embed SAPI是一种比较特殊的sapi,容许你在C/C++语言中调用PHP/ZE提供的函数。并且这种sapi和上面的三
种一样,按Module Init、Request Init、Rshutdown、mshutdown的流程执行着。 当然,这只是其中一种情况。
因为特定的应用由自己特殊的需求,只是在处理PHP脚本这个环节基本一致。
真正令emebed模式独特的是因为它可能随时嵌入到某个程序里面去(比如你的test.exe里),然后被当作脚本的
一部分在一个请求的时候执行。控制权在PHP和原程序间来回传递。
- PHP的生命周期
- PHP的生命周期
- php的生命周期
- php的生命周期:SAPI
- PHP的生命周期
- 95 php php的生命周期
- PHP 设置SESSION的生命周期
- [php]设置SESSION的生命周期
- PHP 设置session的生命周期
- php中session的生命周期
- 设置session的生命周期(php)
- PHP源码分析-PHP的生命周期
- PHP源码分析-PHP的生命周期
- PHP源码分析-PHP的生命周期
- PHP源码分析-PHP的生命周期
- php生命周期
- php 生命周期
- PHP底层探索(四):SAPI的生命周期
- ORA-3136 —— Fatal NI connect error 12170
- 15周任务3
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
- QT 设置程序界面风格
- java study 001
- PHP的生命周期
- [iPhone初级]IOS自带NSXMLParser对xml文件的解析
- 理解Python的双下划线命名(转过来慢慢理解)
- :system.form_status
- 第十五周任务三
- pdf 或office文件转换成html5的方法
- 一些必不可少的Sublime Text 2插件
- ios 资源
- Vcard 标准格式