博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FastCgi与Cgi
阅读量:6420 次
发布时间:2019-06-23

本文共 826 字,大约阅读时间需要 2 分钟。

 
转载请注明出处: 
他们之间的不同在于
 
FastCgi的进程是常驻的,监听一个socket, 无线循环等待。当有请求的时候,web服务器会将请求通过socket发送给fastcgi进程管理程序(例如php-fpm),fastcgi管理程序会将请求通过sockert转发给fastcgi程序, 收到请求就会进行处理, 处理完就会继续等待。 fastcgi进程管理程序启动的时候是通过exec()函数启动多个fastcgi子进程,也就是worker进程,高并发情况下,会将请求分散到不同的子进程上。 既然基于socket的,那么应该是可以将fastcgi部署在其他主机上。
 
 
cgi程序, web服务器每得到一个请求,就会调用popen的方式启动一个cgi进程, 该cgi进程会读取环境变量和标准输入, 然后进行处理,输出到标准输出哪里。 popen会返还一个管道的文件描述符,以此可以进行输入输出。
下面是一个cgi程序例子
#include "stdio.h"#include "stdlib.h"#include 
int mian(){ char *data; data = getenv("QUERY_STRING"); puts(data); printf("Hello cgi!"); return 0;}

 

 
老生常谈: cgi对每个请求都会新建一个进程处理,处理完就关闭。 fastcgi进程是常驻的,初始化的时候不处理请求, 在主循环中接受请求处理。 fastcgi进程管理程序则是统一管理fastcgi进程的,负责预先启动fastcgi、建立fastcgi进程池、转发请求给fastcgi进程、转发返还给web服务程序、监听socket接收web服务程序的请求。
 

转载于:https://www.cnblogs.com/stonehat/p/6286966.html

你可能感兴趣的文章
前端构建:Less入了个门
查看>>
Hibernate 自动生成数据库表
查看>>
phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
查看>>
牛客网Java刷题知识点之构造函数是什么、一般函数和构造函数什么区别呢、构造函数的重载、构造函数的内存图解...
查看>>
博客更名为 健哥的数据花园
查看>>
Android 性能测试之方向与框架篇
查看>>
linux 批量进行:解压缩某一类压缩文件类型的文件
查看>>
ubuntu,CentOS永久修改主机名
查看>>
激活modelsim se 10.4 时运行patch_dll.bat不能生成TXT
查看>>
17秋 软件工程 Alpha 事后诸葛亮会议
查看>>
线性空间
查看>>
Tensflow的targmax函数
查看>>
疑似checkpoint堵塞数据库连接
查看>>
Node.js中针对中文的查找和替换无效的解决方法
查看>>
理解指针的关键
查看>>
如何查看Ubuntu下已安装包版本号
查看>>
MS SQL巡检系列——检查重复索引
查看>>
我的那些年(2)~我毕业了
查看>>
VS2017 配置ImageMagick
查看>>
scrapy 直接在编辑器运行
查看>>