php-fpm (php fastcgi process manager) : php fastcgi 进程管理器 ,用来管理一个master主进程和多个worker进程的程序。
1.为什么会出现php-fpm?
fpm的出现全是因为php-fastcgi的出现,为了更好的管理php-fastcgi而实现的一个程序。
2.什么是php-fastcgi?
php-fastcgi 只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现了php-fpm)。
3.为什么是php-fastcgi 而不是 php-cgi?
其实在php-fastcgi之前有个php-cgi,只是它的执行效率太低下,因此被php-fastcgi取代。
4.fastcgi 和 cgi的区别:
当一个服务web-service(nginx)分发过来请求的时候,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给php.
在cgi的年代,思想比较保守,总是一个请求过来后,先去读取php.ini里面的基本配置信息,初始化执行环境,每次都要不停的去创建一个进程,读取配置文件,返回数据,退出进程,久而久之,启动进程的工作边的乏味特别累。
在php来的的5.0的时代,大家对这种工作方式特别反感,想偷懒的人就想出来,我可不可以让cgi一次启动一个主进程(master),让他只读取一次配置,然后再启动多个工作进程(worker),当一个请求来的时候,通过master传递给worker这样就可以避免重复劳动力了,于是产生了fastcgi.
5. fastcgi这么好,启动的woker用完怎么办?
当worker不够的时候,master会通过配置里面的信息,动态启动worker,等空闲的时候可以回收worker