CGI(common gateway interface)通用网关接口
这个运行模式应该是很久以前了吧,不过我也没用过,只是从网上资料了解了下,书面上的解释就是:cgi是web服务器与机器上的其他程序进行通信的一个接口,其他程序可以是任何语言,它通过cgi这个接口从web服务器获得输入,然后把运行的结果通过cgi这个接口传输给web服务器,而web服务器把这个结果发送给浏览器.(这个解释好渣,还是看下面的好了)
而在php上解释就是web server将用户请求以消息方式交给php独立进程;这些应该就是它的工作模式,具体的貌似我也说不清楚,下面是摘自百度的一段话:
它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。CGI方式在遇到连接请求(用户 请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi 方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。
我觉得更靠谱点的解释是:cgi就是Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,然后再返回给相应的请求用户.
fast-cgi
以FastCGI的方式运行。这种形式是CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量fork-and-execute(创建-执行)。而FastCGI则不同,FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次。FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
ISAPI
这个东西听说是微软自己搞出来的,真是够任性的。不过也没用过。摘下网上的解释:
ISAPI即Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。(由于微软的排他性,只能运行于windows环境)
CLI
这个是PHP的命令行执行模式,这个也没玩过 ==!不过
php filaname
哈哈,这个貌似也算是。嗯,这个运行模式对于现在来说没什么好解释的,先这样!
APACHE模块
这个应该就是大家最常用的运行模式了吧,这个其实就是将PHP集成到APACHE服务器,同一个进程运行。