重点先容一下FastCGI
FastCGI是CGI的升级版本,FastCGI像是一个常驻 (long-live)型的 CGI,它可以一贯实行着,只要激活后,不会每次都要花费韶光去 Fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本措辞间通信的接口。多数盛行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本措辞所支持,个中就有PHP。
FastCGI接口办法采取C/S构造,可以将HTTP做事器和脚本解析做事器分开,同时在脚本解析做事器上启动一个或者多个脚本解析守护进程。当HTTP做事器每次碰着动态程序时,可以将其直接交付给FastCGI进程来实行,然后将得到的结果返回给浏览器。这种办法可以让HTTP做事器专一地处理静态要求或者将动态脚本做事器的结果返回给客户端,这在很大程度长进步了全体运用系统的性能。
它的事情事理
1)Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module);
2)FastCGI进程管理器自身初始化,启动多个CGI阐明器进程 (可见多个php-cgi.exe或php-cig)并等待来自Web Server的连接;
3)当客户端要求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI阐明器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi;
4)FastCGI子进程完成处理后将标准输出和缺点信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,要求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。在正常的CGI模式中,php-cgi.exe在此便退出了。
优点
1)从稳定性上看,FastCGI因此独立的进程池来运行CGI,单独一个进程去世掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑;
2)从安全性上看,FastCGI支持分布式运算。FastCGI和宿主的Server完备独立,FastCGI怎么down也不会把Server搞垮;
3)从性能上看,FastCGI把动态逻辑的处理从Server等分离出来,大负荷的IO处理还是留给宿主Server,这样宿主Server可以齐心专心一意作IO,对付一个普通的动态网页来说, 逻辑处理可能只有一小部分,大量的是图片等静态