网站首页 > 技术教程 正文
CGI、FastCGI、php-fpm
在使用PHP开发应用时,我们用的最多的无非就是LNMP、LAMP等架构,这也是PHP开发的经典架构,使用起来简单好用,可正时因为简单好用, 使得很多人仅仅停留在会使用的层次上;CGI、FastCGI、php-fpm这些名词我们经常听到,但是你真的知道它们在整个架构中处于什么位置发挥什么作用吗?看完这篇文章,保证你如醍醐灌顶一般,清清楚楚。
一:CGI是什么?
CGI是一种协议,全称公共网关接口(Common Gateway Interface),什么是协议,就是一套标准,比如我们平时接触最多的http/https。CGI专门用在webServer(nginx、apache)与CGI程序之间通信,CGI应用程序就是用编程语言编写的应用程序,前提是这种语言具有标准输入、输出以及环境变量,比如php-cgi。
我们的webServer在收到用户的.php类型的请求,就会把请求提交给cgi程序,这时php-cgi程序根据提交参数进行处理,然后按照标准输出给webServer相应的html内容,服务器再返回给浏览器。整个过程中,CGI扮演了中间人的身份,完全独立于服务器和应用程序(php-cgi)之外。
然而CGI有个很大的缺点,每一次的web请求都会退出进程,这也意味着每次请求都要重新开启进程,造成系统资源的浪费,在高并发的场景中,显然这不是最优的选择,因此就出现了FastCGI。
二:FastCGI又是什么?
FastCGI,从名字上看,应该是CGI的升级版,可以这么理解吧;不同于CGI的是,FastCGI是一种数据交互的二进制协议,没错,它仍然是一种协议,它的目的在于降低webServer与应用程序(php-cgi)之间交互的负载,提高单位时间内请求的吞吐量。
FastCGI使用常驻进程的方式处理请求,这些常驻进程都由FastCGI Server统一管理,跟webServer没有任何关系,请求过来时,webServer将环境变量和信息通过进程间通讯发送给FastCGI进程,处理完后返回给webServer,服务器再返回给浏览器。
FastCGI由于常驻进程,在请求量很小的时候仍然占用内存,因此,相比CGI消耗更多的系统的内存。php官方发布的php-cgi是自带FastCGI管理器的,然而在使用过程中,一旦修改php.ini配置文件,就要kill掉php-cgi进程,重新启动,不能热重启,所以又出现了php-fpm完美解决这个问题。
三:php-fpm厉害在哪?
PHP-FPM全称:PHP FastCGI Process Manager,是用于管理php-fastcgi进程的管理器,php-fpm会开启一个master进程常驻,这个进程用来管理其他子进程work,而work进程则是按需开启,如果在一定时间段里没有请求到work进程,work进程就会被关闭,而当请求数量增大时,则会开启多个work进程来应付大量请求,work进程的最大数量不超过配置进程数。这样对进程池形成了很好的管理。也完美解决了上述两个问题。
怎么样?是不是感觉其实也没有想象中那么难理解,理解了这些,以后在解决问题的过程中,就能多几分把握问题关键点的几率。语言本没有好坏之分,架构则是一种思维体系,懂架构才能真正在技术的道路上越走越远。
今天的分享就到这里了,下期见!如果喜欢我的内容,关注我,下期更精彩~~
欢迎转发、留言~~
猜你喜欢
- 2024-10-14 CGI、FastCGI、PHP-CGI、PHP-FPM个人理解
- 2024-10-14 你了解吗?最佳6个开源Python应用服务器
- 2024-10-14 CGI,FastCGI,PHP-CGI与PHP-FPM区别详解
- 2024-09-30 教你如何利用fastcgi_cache缓存加速WordPress
- 2024-09-30 CGI,FastCGI,PHP-CGI与PHP-FPM的区别
- 2024-09-30 PHP应用模式之FastCGI的运行工作原理详解
- 2024-09-30 Nginx提升:Nginx+PHP+FastCGI加速模式
- 2024-09-30 8、简述FastCGI(fast方法论)
- 2024-09-30 Nginx+FastCgi+Php 的工作机制(nginx用什么处理php)
- 2024-09-30 一张图理解Nginx FastCGI:Nginx FastCGI工作原理解析
你 发表评论:
欢迎- 最近发表
-
- Linux入门-普通用户赋予sudo权限(linux基础用户及权限管理的思维导图)
- Linux系统更改系统用户与密码,RK3568工控主板演示
- 在Windows服务器上安装Linux系统5种主要方法!
- Linux系统非root用户执行Docker命令
- 2、linux命令-用户管理(linux用户和用户组管理)
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- Linux中wheel组的使用(centos wheel组和sudo)
- 信息安全实战案例:Linux系统用户权限管理
- Linux 组的管理:groupmod命令 + 练习 + 思维导图
- Linux中的用户管理(linux用户管理的命令)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)