SAPI(PHP常见的四种运行模式)

SAPI(Server Application Programming Interface)服务器应用程序编程接口,即PHP与其他应用交互的接口,PHP脚本要执行有很多方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。

SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi、fast-cgi、cli、apache模块的DLL、isapi


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

CGI

CGI 即通用网关接口(Commom Gateway Interface),它把网页和WEB服务器中的执行程序连接起来,把从HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI的跨平台性能极佳,几乎可以在任何操作系统上实现。

CGI方式在遇到连接请求先要创建CGI的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是CGI性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内存,CPU时间等,造成效能低下。


FastCGI

fast-cgi 是 CGI的升级版本,FastCGI可以看成是一个常驻型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。PHP使用PHP-FPM(FastCGI Process Manager),全称PHP FastCGI 进程管理器进行管理。

FastCGI的工作原理:

     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子进程关闭连接是,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI继承管理器的下一个连接。在CGI模式中,php-cgi在此便退出了。

CGI每个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重出始化全部数据结构。而使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。


cli

cli 是PHP的命令运行模式(Linux下 php -m 查找php安装了哪些扩展就是php命令行模式)


apache模块的DLL:

在模块化(DLL)中,PHP是与Web服务器一起启动并运行(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)


引用:https://blog.csdn.net/zhuocr/article/details/60328967

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 把联系人列表翻了一遍又一遍,我居然找不到一个觉得此刻可以尽情聊一聊的人,突然觉得好忧伤,或许很多人也会这样,这样的...
    阿紫ahaha阅读 245评论 0 0
  • 上大小班的时候,是在邻村,每天早上都要走一段路。通往学校有两条路,一条是公路,需要从我们村北的一个洞穿过去;另一条...
    乌鸦吃蛋糕阅读 208评论 0 1
  • 这是“崔律精时力之100天挑战《奇特的一生》阅读”系列,今天是2019年2月5日。 一、原文: P45 我浏览了他...
    元文ing阅读 292评论 0 0
  • 在公交车上的时候,听到一个声音:成长就是学会告别,接受失去。 好喜欢这一句话:太多人说再不像自己,而我们一定要胜在...
    琉筱璃阅读 932评论 1 10
  • 12月中旬,顶呱呱政企服务中心在政府、全国知名企业、百家媒体的见证下隆重开业。近日,成都市发改委相关领导、武侯区政...
    鹅毛不会飞阅读 359评论 0 0