关于cgi,fastcgi,php-fpm的一些个人理解

  • 个人将cgi理解为翻译工具,举个例子,webserver如apache是中国人,收到的请求访问php文件是法国人,两者语言不通,无法沟通。这时cgi作为一个接口工具,为两者做翻译的服务。cgi程序会解析php的内容,以双方约定的形式返回web服务器。

 

  • cgi全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。当web server(nginx)收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境(消耗大量时间,对每个请求都要执行,fastcgi就是对这个过程的优化),然后处理请求,再以CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。
  • Fastcgi是用来提高CGI程序性能的。WEB服务器与处理程序之间通信的一种协议,是CGI的改进方案。用来沟通程序(如PHP, Python, Java)和Web服务器(Apache2, Nginx), 理论上任何语言编写的程序都可以通过Fastcgi来提供Web服务。 Fastcgi的特点是会启动一个master,解析php.ini文件,初始化环境。在一个进程中依次完成多个请求,以达到提高效率的目的,大多数Fastcgi实现都会维护一个进程池。
  • PHP-fpm: 是一个实现了Fastcgi的程序,被PHP官方收录了(php5.3)。fastcgi是一个协议,php-fpm实现了这个协议

 

posted @ 2017-07-16 08:50  一船清梦压星河  阅读(121)  评论(0编辑  收藏  举报