概念区分:CLI,CGI,FastCGI,PHP-CLI,PHP-CGI,PHP-FastCGI,PHP-FPM

PHP 阅读: 290

学习PHP时遇到一些慨念,开始的时候有些分不清,这几天又好好查了一下资料,这里总结一下。

CLI

CLI 为 Command Line Interface 的缩写,即命令行接口。CLI是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。

比如你在windows下使用的cmd,在Linux下使用的shell,就是操作系统提供的CLI。

CGI

CGI 为 Common Gateway Interface 的缩写,即通用网关接口(CGI只是接口协议,不是语言)。CGI是Web服务器运行时调用外部程序的规范, 按CGI编写的程序可以扩展Web服务器的功能。可以说无论什么服务器和编程语言,只要他们遵循了CGI规范,可以配合使用。

CGI运行模式.

FastCGI

FastCGI 为 CGI 的优化,优化了CGI的运行模式,从而加快了执行速度和效率(所以加了个Fast)。

CGI工作模式:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI进程,一个CGI进程则处理完一个请求后就立马结束,下个请求来时再创建新的CGI进程。当然,这样在访问量很少没有并发的情况也行。可是当访问量增大,需要较高并发,这种方式就不适合了。

而FastCGI像是一个常驻内存的CGI,它可以一直执行,等待请求的到来,不会每次请求都要重新启动一次(这是CGI最为人诟病的fork-and-execute模式)。

PHP-CLI

PHP-CLI 为 PHP - Command Line Interface 的缩写,即PHP命令行接口。这是PHP提供的CLI,在系统命令行中使用PHP的一种方式。PHP-CLI将PHP的所有优点应用于命令行脚本,允许创建服务端支持脚本或系统应用程序,还可以使用GUI!

PHP-CGI

PHP-CGI 为 PHP - Common Gateway Interface 的缩写,即PHP通用网关接口。这是PHP提供的CGI实现,可以在提供了CGI的服务器上使用,比如 Apache,Nginx。

PHP-FastCGI

PHP-FastCGI 是 PHP 在 FastCGI 模式的实现,是对PHP-CLI的优化。

PHP-FPM

PHP-FPM的全称是 PHP FastCGI Process Manager,即PHP的FastCGI进程管理器。意思PHP-FPM是一个管理FastCGI进程的管理程序。它能够根据实际情况决定是否需要启动新的FastCGI进程,是否需要结束FastCGI进程等,可以有效控制内存和进程、可以平滑重载PHP配置。

php-fpm运行模式

总结

CLI、CGI、FastCGI 是接口实现的规范,不是具体的软件程序,任何编程语言都可以根据这些规范的编写自己的CLI、CGI、FastCGI,比如PHP、Python、Nodejs都可以。

PHP-CLI、PHP-CGI、PHP-FastCGI 是 PHP 实现的 CLI、CGI、FastCGI 规范,他们是具体的程序,比如做网站使用的PHP-CGI、PHP-FastCGI,而编写爬虫一般使用的PHP-CLI。

参考文章

  1. 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM
  2. PHP 的命令行模式
  3. CGI、FastCGI、PHP-CGI和PHP-FPM 概念区分
  4. PHP CLI
  5. CGI与FastCGI - wanghetao - 博客园
  6. CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】 - 小蒋不素小蒋 - 博客园

版权声明:本文为博主原创文章,转载需注明来自: 洛洛の空间