php原理基础

1.PHP运行模式有4钟:
1)cgi 通用网关接口(Common Gateway Interface))
2) fast-cgi 常驻 (long-live) 型的 CGI
3) cli  命令行运行   (Command Line Interface)
4)web模块模式 (apache等web服务器运行的模块模式)

参考:http://www.jb51.net/article/37756.htm

 

2.CGI、FastCGI、php-cgi、php-fpm、 nginx的关联

① CGI:公共网关接口,可以看成一种协议,可以使得web服务器(如nginx)和web应用程序(如php)进行"交谈";

  CGI使用的是让人诟病的fork-and-execute模式:

    CGI会为每一个浏览器请求新建一个cgi子进程(每次都要启动CGI解释器、加载配置、连接web服务器等初始化工作),进行web应用的处理,处理完后立即销毁子进程,高并发时很占用资源,性能低下

② FastCGI:是一种支持长连接(long-live)的CGI,可以创建一个子进程后处理多个web请求,还可以处理来自外部网络服务器的web请求,所以支持高并发和分布式

以 FastCGI 模式运行 PHP 有几个主要的好处:

首先,就是 PHP 出错的时候不会搞垮 Apache,只是 PHP 自己的进程当掉(但 FastCGI 会立即重新启动一个新 PHP 进程来代替当掉的进程);
其次, FastCGI 模式运行 PHP 比 ISAPI 模式性能更好; 
最后,就是可以同时运行 PHP5 和 PHP4。参考下面的配置文件,分别建立了两个虚拟主机,其中一个使用 PHP5,另一个使用 PHP4。 

参考:http://blog.csdn.net/hwh4729/article/details/5938764

 

 

 PHP-CGI PHP解释器,可以算是PHP自带的PHP FastCGI管理器,修改php.ini文件需重启php-cgi才能运行,不可以平滑启动,直接杀死php-cgi进程,php就不能运行了(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。)

④ PHP-FPM 是一个PHP FastCGI管理器,PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,配置都是在PHP-FPM.ini的文件内,而启动、重启都可以从php/sbin/PHP-FPM中进行。更方便的是修改php.ini后可以直接使用PHP-FPM reload进行加载,无需杀掉进程就可以完成php.ini的修改加载,

php-fpm内置了php解释器(也可能是内部实现了调用php-cgi解释器的功能)的FastCGI服务,启动时能够自行读取php.ini配置和php-fpm.conf配置.

总结:
  fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php。因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置:将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。同时,php安装的时候,需要开启支持fastCGI选项,并且编译安装php-fpm补丁/扩展,同时,需要启动php-fpm进程,才可以解析nginx通过fastCGI转发过来的php脚本

 参考:http://www.cnblogs.com/zengkefu/p/5452354.html

posted on 2016-09-23 15:37  JYsharp  阅读(118)  评论(0)    收藏  举报