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.CLI 模式
从版本 4.3.0 开始,PHP 提供了一种新型别的 SAPI(Server Application Programming Interface,服务端应用程式设计埠)支援,名为 CLI,意为 Command Line Interface,即命令列介面。顾名思义,该 SAPI 模组主要用作 PHP 的开发外壳应用。 CLI SAPI 和其它 SAPI 模组相比有很多的不同之处。值得一提的是,CLI 和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为。
以下为 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 中的某些设定,因为这些设定在外壳环境下是没有意义的。