sapisapi(server application programming interfac) is an application programming interface (api) provided by the web server to help other developers in extending the web server capabilities.
sapi是一个用来帮助其他开发程序扩展web服务器功能的应用程序接口(api)。它将外部条件抽象, 为内部的php提供一套固定统一的接口, 使得php自身实现能够不受外部环境影响,保持一定的独立性。
php中常用的sapi有cli(命令行模式,单进程)、php-fpm、cgi、apache...
有点像策略模式,使用相同的接口,但是实现会略有不同。
php的启动和终止请求之前的开始阶段:
minit:模块初始化阶段。初始化一些扩展、常量、类、资源等所有被php脚本用到的东西。(常驻内存,可以被所有请求使用。)
print:模块激活阶段。php会调用所有模块的rinit函数,在这个阶段各个模块也可以执行一些相关的操作,比如初始化本次请求使用到的变量。
请求之后的结束阶段:
rshutdown:这个页面请求执行完毕,或者被用户给die(exit)了, 这时php会启动回收程序,回收本次请求使用的资源。这次会执行所有已加载扩展的rshutdown(俗称request shutdown)方法, 这时候扩展可以利用内核中的变量表等做的一些事情。因为php一旦把所有扩展的rshutdown方法执行完,便会释放掉这次请求使用过的所有资源,比如变量表的所有变量、所有在这次请求中申请的内存等。
mshutdown:php执行所有扩展的mshutdown,释放资源。
php的生命周期1.单进程sapi生命周期(cli/cgi)
2.多进程sapi生命周期(apache2)
3.多线程的sapi生命周期
4.embed
embed sapi是一种比较特殊的sapi,容许你在c/c++语言中调用php/ze提供的函数。(不太了解,明天看一下! http://www.laruence.com/2008/09/23/539.html)
综述理一下php的生命周期,以及php整个执行过程。还有怎么通过sapi和php模块沟通.
(图片基本是从参考链接那边拿过来的,站在前人的肩膀上。)
相关推荐:
php源码分析-php的生命周期_php教程
php 变量生命周期:php源码分析-php的生命周期
php的生命周期 opcode缓存 什么是php的词典扫描?该如何处理
以上就是php的生命周期详解的详细内容。