fastcgi与cgi的区别
fastcgi与cgi的区别
先讲下cgi:
cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fork一个新进程来运行外部c程序(或perl脚本...), 这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。
后来出现了一种更高级的方式是, web服务器可以内置perl解释器或php解释器。 也就是说这些解释器做成模块的方式,web服务器会在启动的时候就启动这些解释器。 当有新的动态请求进来时,web服务器就是自己解析这些perl或php脚本,省得重新fork一个进程,效率提高了。
fastcgi的方式是,web服务器收到一个请求时,他不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出。
fastcgi跟cgi的区别是:
在web服务器方面 在对数据进行处理的进程方面
cgi fork一个新的进程进行处理 读取参数,处理数据,然后就结束生命期
fastcgi 用tcp方式跟远程机子上的进程或本地进程建立连接 要开启tcp端口,进入循环,等待数据的到来,处理数据
举个例子: 服务端现在有个10万个字单词, 客户每次会发来一个字符串,问以这个字符串为前缀的单词有多少个。 那么可以写一个程序,这个程序会建一棵trie树,然后每次用户请求过来时可以直接到这个trie去查找。 但是如果以cgi的方式的话,这次请求结束后这课trie也就没了,等下次再启动该进程时,又要新建一棵trie树,这样的效率就太低下了。 而用fastcgi的方式的话,这课trie树在进程启动时建立,以后就可以直接在trie树上查询指定的前缀了。
转载于:https://www.cnblogs.com/wanyp/p/5887836.html
fastcgi与cgi的区别相关推荐
- cgi与php的区别,fastcgi与cgi的区别
fastcgi与cgi有什么不同 前言 现在的CGI基本没人使用,不安全以及性能极其低下,越来越多的使用web内置扩展.fastCGI.例如微软iis的ISAPI,apache的php模块,nginx ...
- cgi php-fpm,CGI、FastCGI、PHP-FPM的区别以及详解 | 剑花烟雨江南
Web服务器 php是为web而生的一种后端语言,但是php也仅仅只是一种后端语言,要实现web开发, 我们需要html,javascript,css等开发语言的协助才能将网页展示在网页上.另外,我们 ...
- Servlet的生命周期 与CGI的区别
2019独角兽企业重金招聘Python工程师标准>>> 对于Servlet,服务器只创建每个servlet的单一实例,每个用户请求都会引发新的线程-----将用户请求将会给相应的do ...
- Servlet的生命周期,及Servlet和CGI的区别
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...
- Fastcgi、CGI 是什么及区别
1.CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. 2.web server(比如说nginx)只是内容的分发者. 比如,如果请求/index ...
- fastCGI了解与学习使用
文章目录 前言 一.CGI CGI介绍 CGI工作流程 CGI的弊端 二.fastCGI 介绍 fastCGI与CGI的区别 fastCGI工作流程 三.fastCGI的使用 nginx下的请求 流程 ...
- Java 最常见的 10000+ 面试题及答案整理:持续更新
Java面试题以及答案整理[最新版]Java高级面试题大全(2021版),发现网上很多Java面试题都没有答案,所以花了很长时间搜集,本套Java面试题大全,汇总了大量经典的Java程序员面试题以及答 ...
- nginx常见面试题
1.nginx常用命令 启动nginx ./sbin/nginx 停止nginx ./sbin/nginx -s stop ./sbin/nginx -s quit 重载配置 ./sbin/ ...
- java面试题有哪些?
肝了一个月的面试题终于来啦,大家开心不. 2022年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spri ...
最新文章
- Pycharm Matplotlib 图像不显示问题
- 截取url的host_java正则表达式获取url的host示例
- Java异常分类及处理
- 操作系统课设——设计模拟一个SPOOLING假脱机输出程序
- 发现了拯救“文献多的一团麻”的工具
- 加载gif_搞笑gif:这啥情况啊?笑容加载不出来了?
- android系统源码的环境下用make来编译,Android源码编译系统入门
- OpenStack Keystone v3 API新特性
- 鼠标悬停在li标签上时显示一个弹框_HTML标签——列表标签
- 达芬奇调色软件:DaVinci Resolve Studio 16 Mac
- 【避免windows权限问题】nodejs 配置全局 globle 缓存 catch
- 如何恢复 TrustedInstaller 所有者权限;怎么给文件夹权限添加“所有受限制的应用程序包”这个用户主体:
- MATLAB实战——方差分析
- 推荐引擎:从搜索到发现
- ctfshow Nodejs
- ​LeetCode刷题实战450:删除二叉搜索树中的节点
- Python实现AES中ECB模式pkcs5padding填充加密/解密(需要加密文档中可以有中文)
- android五子棋源代码,Android五子棋游戏源码详解
- 如何安全使用公共Wifi,防止信息泄露?
- 【无标题】 中国红薯淀粉市场盈利动态与销售前景预测报告(2022-2027年)