1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用 户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。
2、ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接 口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的 用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。
3、FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是 CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。
以 ISAPI 模式运行 PHP 的,这种方式最大的缺点就是稳定性不好,当 PHP 出错的时候,Apache进程也死掉。
FastCGI 模式运行 PHP 的优点:
首先就是 PHP 出错的时候不会搞垮 Apache,只是 PHP 自己的进程当掉(但 FastCGI 会立即重新启动一个新 PHP 进程来代替当掉的进程)。
其次 FastCGI 模式运行 PHP 比 ISAPI 模式性能更好
最后,就是可以同时运行 PHP5 和 PHP4
FastCGI 模式的一些缺点:
用 FastCGI 模式更适合生产环境的服务器,但对于开发用机器来说就不太合适。因为当使用 Zend Studio 调试程序时,由于 FastCGI 会认为 PHP 进程超时,从而在页面返回 500 错误。
从版本 4.3.0 开始,PHP 提供了一种新类型的 SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 SAPI 模块相比有很多的不同之处。值得一提的是,CLI 和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为。
CLI SAPI 最先是随 PHP 4.2.0 版本发布的,但仍旧只是一个实验性的版本,并需要在运行 ./configure 时加上 –enable-cli 参数。从 PHP 4.3.0 版本开始,CLI SAPI 成为了正式模块,–enable-cli 参数会被默认得设置为 on,也可以用参数 –disable-cli 来屏蔽。
从 PHP 4.3.0开始,CLI/CGI 二进制执行文件的文件名、位置和是否存在会根据 PHP 在系统上的安装而不同。在默认情况下,当运行 make 时,CGI 和 CLI 都会被编译并且分别放置在 PHP 源文件目录的 sapi/cgi/php 和 sapi/cli/php 下。可以注意到两个文件都被命名为了 php。在 make install 的过程中会发生什么取决于配置行。如果在配置的时候选择了一个 SAPI 模块,如 apxs,或者使用了 –disable-cgi 参数,则在 make install 的过程中,CLI 将被拷贝到 {PREFIX}/bin/php,除非 CGI 已经被放置在了那个位置。因此,例如,如果在配置行中有 –with–apxs,则在 make install 的过程中,CLI 将被拷贝到 {PREFIX}/bin/php。如果希望撤销 CGI 执行文件的安装,请在 make install 之后运行 make install-cli。或者,也可以在配置行中加上 –disable-cgi 参数。
以下为 CLI SAPI 和其它 SAPI 模块相比的显著区别:
* 与 CGI SAPI 不同,其输出没有任何头信息。尽管 CGI SAPI 提供了取消 HTTP 头信息的方法,但在 CLI SAPI 中并不存在类似的方法以开启 HTTP 头信息的输出。CLI 默认以安静模式开始,但为了保证兼容性,-q 和 –no-header 参数为了向后兼容仍然保留,使得可以使用旧的 CGI 脚本。在运行时,不会把工作目录改为脚本的当前目录(可以使用 -C 和 –no-chdir 参数来兼容 CGI 模式)。出错时输出纯文本的错误信息(非 HTML 格式)。
* CLI SAPI 强制覆盖了 php.ini 中的某些设置,因为这些设置在外壳环境下是没有意义的。

转载于:https://www.cnblogs.com/huangye-dream/p/3560722.html

PHP的ISAPI和FastCGI比较相关推荐

  1. IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7

    在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...

  2. isapi mysql_Windows 2008R2以ISAPI和Fastcgi方式安装配置IIS、PHP、Mysql环境

    Windows下PHP有两个版本,非线程安全及线程安全版本,运行方式可选ISAPI.Fastcgi.CGI.1.Non Thread Safe版本php适用于以CGI以和fastCGI运行的web服务 ...

  3. IIS下PHP的ISAPI和FastCGI比较

    在Windows IIS 6.0下配置PHP,通常有CGI.ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异. 1. ...

  4. Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

    说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便. 在 ...

  5. iis7 php5 isapi配置,Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

    说到PHP环境配置与安装,通常以Apache搭载PHP配置为主,随着PHP版本不断更新,对Windows IIS平台的支持也越来越好,在Windows IIS平台上配置安装PHP环境也越来越方便. 在 ...

  6. cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?

    文章来自:php自学中心网站 链接:http://www.startphp.cn/front/php/0108111.html 作者:磊丰 商务合作:请加微信(QQ):2230304070 文章正文 ...

  7. C语言开发fastcgi初探(一)

    为什么80%的码农都做不了架构师?>>>    这几天闲着没事干,虽然开学了,但是到下周才有课上.再者,研二了,也没啥课了,导师又不让我出去工作,我那个纠结啊.算鸟,那就自己折腾点东 ...

  8. php 5.3.29 nts,为什么PHP 5.3不在支持ISAPI,为什么还要分NTS和TS版本?

    自PHP 5.3.1版本开始,便已不在支持ISAPI模式,那为什么在windows下PHP官方仍然发布NTS和TS两个版本? 回复内容: 自PHP 5.3.1版本开始,便已不在支持ISAPI模式,那为 ...

  9. iis6 fastcgiiis6 mysql php 2013_windows2003SP2下IIS6.0+FastCGI+PHP5.3+MySQL5.1+phpMyAdmin最详细图文配置教程...

    windows2003SP2下 IIS6.0+FastCGI+PHP5.3+MySQL5.1+Gzip PHP网站环境详细配置教程(菜鸟版) 2012.11.8 说明: 本帖是我经过一天一夜完成的,不 ...

最新文章

  1. java 实验4 异常
  2. 格式编号始终显示2个小数位
  3. git 本地仓库同时推送到多个远程仓库
  4. 七、Mosquito 集群搭建
  5. 单行溢出 和多行溢出
  6. SQLServer常用的字符串函数梳理
  7. matlab save txt 乱码,matlab代码或中文复制到word就变成乱码怎么办?
  8. php解escape,PHP下escape解码函数用法示例
  9. 一个“普通人”的秋招算法岗上岸心得
  10. 进程的系统调用命令转换为INT 0x80中断的过程
  11. javascript时间函数
  12. Process Explorer 进程管理及排错利器(上)
  13. 创新不是突然而至——它是慢慢成长的
  14. 微信h5开发网页授权-本地如何开发调试?
  15. 计算机高一教案,《计算机系统的基本组成》高一信息技术课教案
  16. mysql 两阶段加锁_MySql-两阶段加锁协议
  17. IB中文考生如何把握戏剧冲突的表现形式与特征
  18. AN APPROACH OF VECTOR FIELD TEXTURE VISUALIZATION BASED ON FIELD DRIVEN STRENGTH算法实现
  19. UNIX/Linux的传奇历史
  20. P3P求解相机姿态原理介绍

热门文章

  1. java编译器代码检查_Java编译器可以优化此代码吗?
  2. 信佑无盘主服务器密码,(信佑无盘帮助手册.doc
  3. sed mysql配置文件_shell解析my.cnf配置文件
  4. 基于Java+SpringBoot+vue+node.js的图书购物商城系统详细设计和实现
  5. HTML+CSS+JS实现 ❤️6种transform图片悬停动态效果❤️
  6. java的uuid有什么用_java – 什么是有效的UUID?
  7. apache php日志配置,HTML_初学:apache与php基本配置,1、APACHE的日志主要分为“ - phpStudy...
  8. java redis rpush_Redis Rpush 命令
  9. 湖北职称计算机考试报名时间2016,湖北2016年下半年职称计算机考试报名时间延长通知...
  10. js调用python接口_JavaScript如何调用Python后端服务