php-fpm和fastcig等概念
php作为后端脚本语言,需要和web服务器搭配。常见的有apache,nginx
php-fpm模式
PHP-CGI就是PHP实现的自带的FastCGI管理器。目前最好的一种方式。
mod_fastcgi模式
cgi定义:
CGI(Common Gateway Interface)。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。
就是apache和php之间的一个中间件协议。
fastcgi它事先就早早的启动好了,而且可以启动多个cgi模块,在那里一直运行着等着,等着web发过来的请求,然后再给php解析运算完成生成html给web后,也不会退出,而且继续等着下一个web请求。而且这些cgi的模块启动是可控的,可监测的。这种技术还允许把web server和php运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。
mod_php模式
下面是通过apache访问的过程
通过sapi传递数据给php解析
从上面图中,我们看出了sapi就是这样的一个中间过程,SAPI提供了一个和外部通信的接口,有点类似于socket,使得PHP可以和其他应用进行交互数据(apache,nginx,cli等)。php默认提供了很多种SAPI,常见的给apache和nginx的php5_module,CGI,给IIS的ISAPI,还有Shell的CLI。
所以,以上的apache调用php执行的过程如下:
apache -> httpd -> php5_module -> sapi -> php