PHP运行模式:CGI、PHP-CGI、FastCGI、PHP-FPM、Cli、Module加载
mod_php模式
使用LoadModule来加载phpx_module(x为PHP版本号)。可以理解为将PHP作为Apache的一个子模块来运行,当请求访问PHP时,Apache就会调用phpx_module来解析PHP代码。
php_module是如何解析PHP代码的呢?——通过sapi。sapi就是一个中间层,提供和外部通信的接口,类似于socket,使得PHP可以和其他应用进行数据交互。PHP提供了多种sapi,如给Apache和Nginx的php_module,给IIS的ISAPI等。
Web服务器通过php_module方式解析执行PHP的模式即为mod_php。
CGI
CGI是 Web Server 与 Web Application 之间数据交换的一种协议。PHP的sapi的另一种方式就是提供cgi模式,现在cgi已经被fastcgi取代。
PHP-CGI
PHP-CGI是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。
FastCGI
FastCGI同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。fast-cgi 是cgi的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要**后,不会每次都要花费时间去fork一次。
PHP-FPM
PHP-FPM是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。
PHP-FPM 的作用就是专门管理PHP中的fastcgi,使PHP在高并发的情况下也能安全稳定的与Web服务器合作,完成请求响应过程。
(WEB 中,Web Server 一般指Apache、Nginx、IIS、Lighttpd、Tomcat等服务器,Web Application 一般指PHP、Java、Asp.net等应用程序)
如果要搭建一个高性能的PHP WEB服务器,目前最佳的方式是Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)方式了,不要再使用 Module加载或者 CGI 方式了。
CLI
cli是php的命令行运行模式
— The end —