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

17-11-29 17:53 字数 699 阅读 3167 已编辑

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,然后主进程重新生成子进程。

1人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 147.27万
私信