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

SAPI(PHP常见的四种运行模式)相关推荐

  1. PHP的四种运行模式

    PHP的四种运行模式 1.CGI 2.FAST-CGI 3.CLI 4.模块模式(Apache等web服务器运行的模块模式) 一.CGI(Common Gateway Interface) CGI即通 ...

  2. 从零学习Fluter(八):Flutter的四种运行模式--Debug、Release、Profile和test以及命名规范...

    从零学习Fluter(八):Flutter的四种运行模式--Debug.Release.Profile和test以及命名规范 好几天没有跟新我的这个系列文章,一是因为这两天我又在之前的基础上,重新认识 ...

  3. spark四种运行模式

    spark的核心组件 1.1Driver Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行 工作.Driver 在 Spark 作业执行时主要负责: 1.1. ...

  4. 漫谈IA32的系统管理模式(SMM)以及IA32的四种CPU模式

    转载: http://bbs.csdn.net/topics/300235884 写在前面   这是我的BIOS启蒙文章第二篇了,上一篇我谈了谈什么是legacy USB,和大家聊了聊在USB键盘背后 ...

  5. 正则中常见的4种匹配模式

    匹配区间类型的需求使用这四种模式能达到事半功倍的效果. 正则中常见的四种匹配模式,分别是:不区分大小写.点号通配模式.多行模式和注释模式. 不区分大小写模式,它可以让整个正则或正则中某一部分进行不区分 ...

  6. stm32芯片休眠模式_STM32的运行、睡眠、停止和待机四种工作模式

    01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中, ...

  7. 一起学习正则表达式(四)常见的4种匹配模式

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/119101667 本文出自 容华谢后的博客 往期回顾: <一起学习正 ...

  8. Android学习-Kotlin语言入门-变量、函数、语法糖、when、for-in、主构造函数、单例类、函数式API、集合遍历、隐式Intent、Activity生命周期、四种启动模式、标准函数

    探究java语言的运行机制 变量.函数.语法糖 when条件语句 for循环 主构造函数.次构造函数 数据类和单例类 集合的创建与遍历 集合的函数式API 创建菜单 隐式使用Intent Activi ...

  9. Activity的四种启动模式应用场景

    在这金三银四的时间里一个哥们忽然一本正经的问我Activity的启动模式和具体的应用模式:我也一想是啊,平是不太注意结果到了 关键的时刻卡壳了,感觉未雨绸缪一下,做个记录: 一.Activity四种启 ...

最新文章

  1. java与众包的联系_众包、众筹和众创是什么 三者区别与联系
  2. [leetcode] 230. Kth Smallest Element in a BST 找出二叉搜索树中的第k小的元素
  3. ni软件管理器_NI 技术支持丨我的 NI 硬件设备不能被识别,怎么办?Windows
  4. android资产目录,android – 从非目录设备中的资产文件夹复制数据库
  5. selenium java项目_1)selenium+ java集成,待深度项目流程应用
  6. 动态规划____编辑距离
  7. java 基本数据类型及自动类型转换
  8. 力扣题目系列:1. 两数之和
  9. oracle 数据库学习笔记
  10. 计算机启动黑屏时间很长,win10开机后黑屏时间很长且进不了安全模式怎么解决?...
  11. 米家和苹果HomeKit更推荐哪个,各自的优缺点如何?
  12. 基于图像传感器的可见光通信的优缺点分析
  13. linux swp文件重启,Linux下.swp文件的恢复方法
  14. 深度学习 图像分割开源代码(附链接,超级全)
  15. 使用R语言筛选数据中的重复行
  16. 设计模式-设计原则-开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段...
  17. WiFi语音智能家居控制系统(二)
  18. 一文读懂供应链金融及其衍生产品
  19. 一朝春尽红颜老,花落人亡两不知
  20. 迅驰时尚盛典,果然不错!

热门文章

  1. 华润e万家联手神策数据 多维分析助力精益运营
  2. 如何成为一名大数据工程师?
  3. linux每日命令(26):Linux文件属性详解
  4. 怎样用ABBYY FineReader中的电子邮件发送OCR结果
  5. 存在网路的情况下重命名SDE中数据图层错误(The orphan junction feature class cannot be renamed)...
  6. 大批量插入数据如何优化
  7. linkedin规则
  8. 学知识的时候出去看看的意义
  9. LUA表与函数的深入理解
  10. 【转】C# 正则表达式 使用介绍