SAPI —— Server Application Programming Interface
简单来说:SAPI提供了一个接口,使PHP和其他应用进数据交互。按照SAPI的接口规范,可以编写出不同的运行模式。
(上图为php源码中sapi所在的目录)
(上图为sapi核心数据结构,具体模式都有对应的实现)
1、cli
cli为命令行接口,它是单进程模式,处理完请求后直接关闭。
除了可以执行php外,还提供一些其他的功能,如:检查php代码语法、启动一个内置的web服务器等。
2、FastCGI
是一种快速通用网关接口,也可以说是一种通信协议,主要和web服务器打交道。
是CGI的升级版。
FastCGI:常驻内存,处理请求效率更高,对系统开销更小。
3、fpm
fpm(fastcgi process manager),是php fastcgi模式的一个进程管理器。
fpm是一种多进程模型,由一个master进程和多个worker进程组成。
master进程负责管理worker进程;worker进程负责处理请求。
对比fastcgi,fpm的优势是:
①对cgi管理方式更丰富、更灵活,性能更好;
②支持平滑重启;