1、运行模式
关于PHP目前比较常见的五大运行模式:
1)CGI(通用网关接口 / Common Gateway Interface)
2)FastCGI(常驻型CGI / Long-Live CGI)
3)CLI(命令行运行 / Command Line Interface)
4)Web模块模式(Apache等Web服务器运行的模式)
5)ISAPI(Internet Server Application Program Interface)
备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll
这个文件。要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。
1.1 CGI模式
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和Web服务器中的执行程序连接起来,它把HTML接收的指
令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。CGI已经是比较老的模式了,这几年都很少用了。
每有一个用户请求,都会先要创建CGI的子进程,然后处理请求,处理完后结束这个
子进程,这就是Fork-And-Execute模式。当用户请求数量非常多时,会大量挤占系统
的资源如内存,CPU时间等,造成效能低下。所以用CGI方式的服务器有多少连接请求
就会有多少CGI子进程,子进程反复加载是CGI性能低下的主要原因。
如果不想把 PHP 嵌入到服务器端软件(如 Apache)作为一个模块安装的话,可以
选择以 CGI 的模式安装。或者把 PHP 用于不同的 CGI 封装以便为代码创建安全的chroot 和 setuid 环境。这样每个客户机请求一个PHP文件,Web服务器就调用
php.exe(win下是php.exe,linux是php)去解释这个文件,然后再把解释的结果以网页的形式返回给客户机。这种安装方式通常会把 PHP 的可执行文件安装到 web 服务器
的cgi-bin 目录。CERT 建议书CA-96.11 建议不要把任何的解释器放到 cgi-bin 目录。
这种方式的好处是把Web Server和具体的程序处理独立开来,结构清晰,可控性强,同时缺点就是如果在高访问需求的情况下,CGI的进程Fork就会成为很大的服务器负担,想象一下数百个并发请求导致服务器Fork出数百个进程就明白了。这也是为什么CGI一直背负性能低下,高资源消耗的恶名的原因。
1.2 FastCGI模式