FastCGI:为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。同ISAPI原理有些类似,就是减少CGI初始化等前置操作的消耗。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。那么Fastcgi是怎么做的呢?首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。要说明的是FastCGI本身仅仅是种协议,php-fpm是其中一种实现,来管理cgi程序,其操作比如:
--start 启动php的fastcgi master进程
--stop 强制终止php的fastcgi master进程
--quit 平滑终止php的fastcgi master进程
--restart 重启php的fastcgi master进程
--reload 重新平滑加载php的php.ini
--logrotate 重新启用log文件