数据结构论坛

首页 » 分类 » 常识 » 面试总结4服务器相关面试问题希望对大家有
TUhjnbcbe - 2024/5/5 21:24:00

1.1、关于CGI和FastCGI的理解

全称是“通用网关接口”,是一种让客户端(web浏览器)与Web服务器(nginx等)程序进行通信(数据传输)的协议。

用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTPheader等,也就是为了保证webserver传递过来的数据是标准格式的

1.2.CGI程序的工作原理

1)每次当webserver收到index.php这种类型的动态请求后,会启动对应的CGI程序(PHP的解析器);

2)PHP解析器会解析php.ini配置文件,初始化运行环境,然后处理请求,处理完成后将数据按照CGI规定的格式返回给webserver然后退出进程;

3)最后webserver再把结果返回给浏览器。

1.3.CGI程序的特点

1)高并发时的性能较差:CGI程序的每一次web请求都会有启动和退出过程,也就是最为人诟病的fork-and-execute模式(每次HTTP服务器遇到动态请求时都需要重新启动脚本解析器来解析php.ini,重新载入全部DLL扩展并重初始化全部数据结构,然后把结果返回给HTTP服务器),很明显,这样的接口方式会导致php的性能很差,在处理高并发访问时,几乎是不可用的。2)传统的CGI接口方式安全性较差

3)CGI对php.ini的配置很敏感,在开发和调试的时候相当方便

2.1.什么是FastCGI?

通过CGI程序的工作原理可以看出:CGI程序性能较差,安全性较低,为了解决这些问题产生了FastCGI。

1)FastCGI(FastCommonGatewayInterface)全称是“快速通用网关接口”是通用网关接口(CGI)的增强版本,由CGI发展改进而来,主要用来提高CGI程序性能,类似于CGI,FastCGI也是一种让交互程序与Web服务器通信的协议2)FastCGI致力于减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求(提高并发访问)。

3)同样的,一般说的FastCGI指的也是用各种语言编写的能实现该功能的程序。

2.2.FastCGI程序的工作原理

1)WebServer启动同时,加载FastCGI进程管理器(nginx的php-fpm或者IIS的ISAPI或Apache的Module)2)FastCGI进程管理器读取php.ini配置文件,对自身进行初始化,启动多个CGI解释器进程(php-cgi),等待来自WebServer的连接。3)当WebServer接收到客户端请求时,FastCGI进程管理器选择并连接到一个CGI解释器。Webserver会将相关环境变量和标准输入发送到FastCGI子进程php-cgi进行处理4)FastCGI子进程完成处理后将数据按照CGI规定的格式返回给WebServer,然后关闭FastCGI子进程或者等待下一次请求。

2.3.FastCGI对进程的管理方式

Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然提高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

2.4.FastCGI的特点:

1)FastCGI具有语言无关性,支持用大多数语言进行编写,对应的程序也支持大多数主流的web服务器FastCGI技术目前支持语言有:C/C++,Java,PHP,Perl,Tcl,Python,SmallTalk,Ruby等。支持FastCGI技术的主流web服务器有:Apache,Nginx,lig

1
查看完整版本: 面试总结4服务器相关面试问题希望对大家有