圣泉山人 后端开发工程师

PHP SAPI

2016-08-18
PHP
 

什么是 PHP SAPI?

PHP脚本要执行有很多种方式,比如:通过Web服务器、直接在命令行下、嵌入在其他程序中。 SAPIServer Application Programming Interface)提供了一个和外部通信的接口,常见的SAPI有:

  • cgi
  • fast-cgi
  • cli
  • isapi
  • apache 模块的 DLL

因此,PHP SAPI即是:php与其他应用通信的接口。

CGI

通用网关接口(Common Gateway Interface)

作用:

连接网页和web服务器的执行程序。它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。

工作原理:

工作模式:fork-and-execute

1、用户请求创建cgi子进程

2、激活一个cgi进程

3、处理请求

4、结束该子进程

每次请求都会fork,因此请求数等于子进程数。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。请求数量变大时,会导致性能低下。因此出现了FastCGI

FastCGI

cgi 的升级版。只要进程激活后,会一直执行着,而不会每次去fork。PHP使用PHP-FPM(FastCGI Process Manager)进程管理器对其进行管理。

工作原理:

1、web Server启动时载入FastCGI进程管理器

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。

5、FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式 中,php-cgi在此便退出了

cli

cli是php的命令行运行模式

ISAPI

ISAPI(Internet Server Application ProgramInterface),是微软提供的一套面向Internet服务的API接口。

一个ISAPIDLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。

apache模块的DLL

apacheCGI的基础上进行的一种扩展,加快PHP的运行效率

该运行模式是在windows环境下使用apache服务器经常使用的,而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。

原文: http://www.phpddt.com/php/php-sapi.html


Similar Posts

上一篇 Vagrant

下一篇 PHP反射

Comments