php 的生命周期【php教程】,php,生命周期
1、PHP的运转形式:
PHP两种运转形式是WEB形式、CLI形式。不管哪一种形式,PHP事情道理都是一样的,作为一种SAPI运转。
1、当我们在终端敲入php这个敕令的时刻,它运用的是CLI。
它就像一个web服务器一样来支撑php完成这个要求,要求完成后再从新把控制权交给终端。
2、当运用Apache或许别web服务器作为宿主时,当一个要求到来时,PHP会来支撑完成这个要求。平常有:
多历程(一般编译为apache的模块来处置惩罚PHP要求)
多线程形式
扼要的实行历程:
1. PHP是跟着Apache的启动而运转的;
2. PHP经由过程mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用顺序编程接口);
3. PHP总共有三个模块:内核、Zend引擎、以及扩大层;
4. PHP内核用来处置惩罚要求、文件流、错误处置惩罚等相干操纵;
5. Zend引擎(ZE)用以将源文件转换成机器语言,然后在假造机上运转它;
6. 扩大层是一组函数、类库和流,PHP运用它们来实行一些特定的操纵。比方,我们须要MySQL扩大来衔接MySQL数据库;
7. 当ZE实行顺序时可能会须要衔接多少扩大,这时候ZE将控制权交给扩大,等处置惩罚完特定使命后再返还;
8. 末了,ZE将顺序运转效果返回给PHP内核,它再将效果传送给SAPI层,终究输出到浏览器上。
2. 运转PHP的几个阶段:
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 要领
3. 种种情况下的SAPI生命周期。
1. 单历程SAPI生命周期。(CGI)
CLI/CGI形式的PHP属于单历程的SAPI形式。这类的要求在处置惩罚一次要求后就封闭。也就是说每次要求都邑反复这几个环节: 最先 - 要求最先 - 要求封闭 - 终了 。能够看到扩大的初始化花费了许多资本。
2. 多历程SAPI生命周期。(MPM的perfork体式格局)
一般PHP是编译为apache的一个模块来处置惩罚PHP要求(mod_php)。Apache平常会采纳多历程形式, Apache启动后会fork出多个子历程(apache里能够指定最先fork出来的历程数)。每一个历程的内存空间自力,每一个子历程刚被fock出来都邑经由最先和终了环节。
3. 多线程的SAPI生命周期。(FastCGI或许MPM的work体式格局里的单个历程)
多线程形式和多历程中的某个历程相似,在这类形式下,只要一个服务器历程在运转着,但会同时运转许多线程,如许能够削减一些资本开支,向Module init和Module shutdown就只须要运转一遍就好了,一些全局变量也只须要初始化一次,由于线程独具的特质,使得各个要求之间轻易的同享一些数据成为可能。
更多PHP相干技术文章,请接见PHP教程栏目举行进修!
以上就是php 的生命周期的细致内容,更多请关注ki4网别的相干文章!