本文共 725 字,大约阅读时间需要 2 分钟。
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,然后主进程重新生成子进程。
转载地址:http://mqlyo.baihongyu.com/