php cgi nginx,cgi、fastcgi、php-fpm、nginx的个人理解。

CGI是Web服务器与动态程序间交互的标准接口,而FastCGI则是一种提高CGI性能的解决方案。FastCGI通过常驻内存的进程管理,避免了每次请求都创建新进程的开销。PHP-FPM作为FastCGI的进程管理器,允许平滑重启以更新配置。在接收到USR2信号后,PHP-FPM会关闭旧进程并启动新进程,确保服务不间断。
摘要由CSDN通过智能技术生成

CGI(Common Gateway Interface)

公共网关接口,webserver与cgi程序之间传递信息的接口标准。保证webserver传递过来的数据是标准格式的。

平时说的cgi一般值cgi程序,即实现了cgi标准的程序。

webserver只能解析静态资源(html、css、js、img),碰到动态资源请求需要交给cgi程序去解析、php解析器会读取php.ini配置,加载扩展模块,然后初始化执行环境,处理请求,返回结果给webserver,退出进程,webserver返回给客户端。因为每来一个请求都要fork出一个新进程去处理。所以性能较低。

FastCGI是一种进程管理工具,管理内存中的CGI进程。

fastcgi在webserver启动时就会fork出一个主进程master,解析phg.ini,初始化执行环境,然后会fork出很多子进程worker,这些worker其实就是cgi的解析器,他们会常驻内存,处理完请求后不会退出。当空闲进程较多时,master会关闭一些闲置worker,所以性能较高。

php-fpm (FastCGI Process Manager)

从定义可以看出php-fpm就是fastcgi进程管理器。用来管理php cgi进程的一个东西。

php-fpm可以实现php的平滑重启。

命令如下

kill -USR2 $(ps -aux | grep php-fpm|awk '{print $1}")

在向php-fpm发送USR2信号后,它会重载所有worker进程,重新载入配置和扩展模块。

实际上平滑重启是保留所有子进程worker,杀掉主进程master,然后主进程重新生成子进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值