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配置.
参考:http://www.cnblogs.com/zengkefu/p/5452354.html
浙公网安备 33010602011771号