生也有涯,知也无涯。这篇文章主要讲述CGI与FastCGI区别相关的知识,希望能为你提供帮助。
简述CGI与FastCGI区别
1.1.CGI
CGI:Common Gateway Interface 公共网关接口
CGI 在2000年或更早的时候用得比较多,以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会 fork 一个新进程来运行外部的 C 程序或者bash,perl脚本等,这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。
CGI 可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准。
请求流程:Client -- (http协议) -->
httpd -- (cgi协议) -->
application server (program file) -- (mysql协议) -->
mysql
结论:透过CGI工作原理,CGI程序性能较差,安全性较低,为了解决这些问题产生了FastCGI。在实际生产中很少使用了。
1.2.FastCGI
FastCGI(Fast Common Gateway Interface)全称是“快速通用网关接口”,是通用网关接口(CGI)的增强版本,由CGI发展改进而来,主要用来提高CGI程序性能,类似于CGI,FastCGI也是一种让交互程序与Web服务器通信的协议。FastCGI的方式是web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出,从而使服务器可以同时处理更多的网页请求(提高并发访问)。
请求流程:Client -- (http协议) -->
httpd -- (FastCGI协议) -->
FastCGI服务器 -- (Mysql协议) -->
Mysql
结论:透过FastCGI工作原理,在内存中同时运行多进程,比CGI方式消耗更多的服务器内存,每个php-CGI进程消耗7至25兆内存,在进行优化配置php-cgi进程池的数量时要防止过量,即使如此但它比CGI性能要好很多了,它还能提供nginx搭配PHP实施项目的可能。
1.3.CGI和fastcgi 比较
参考资料:https://www.cnblogs.com/tssc/p/10255590.html 比较项
【CGI与FastCGI区别】 CGI
FastCGI?
服务方式
一次性的过河拆桥式的服务
全周期的持续式的服务
应用场景
测试和实验环境
生产环境
推荐阅读
- docker——docker数据管理
- Mysql数据库的备份恢复 与日志管理
- 使用Docker搭建MySQL主从
- 免费开源的录屏软件Captura使用安装配置
- Linux系列(linux vi 跳到最后一行)
- 看看这款文件防篡改监控工具——WGCLOUD
- k8s系列-06-containerd的基本操作
- Linux系列(Linux Shell实现字符串分割)
- OpenHarmony 样例——鸿蒙小车开发