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

PHP luoluolzb 浏览1657次

学习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。

参考文章

本文标签: PHP

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://luoluolzb.cn/articles/69/concept-differentiation-cli-cgi-fastcgi-php-cli-php-cgi-php-fastcgi-php-fpm
您需要登录后才发布评论。 点此登录
用户评论 (0条)

暂无评论,赶紧发表一下你的看法吧。