深入理解FastCGI协议以及在PHP中的实现
22页1、深入理解FastCGI协议以及在PHP中的实现在讨论 FastCGI 之前,不得不说传统的 CGI 的工作原理,同时应该大概了解CGI 1.1协议传统 CGI 工作原理分析客户端访问某个 URL 地址之后,通过 GET/POST/PUT 等方式提交数据,并通过 HTTP 协议向 Web 服务器发出请求,服务器端的 HTTP Daemon(守护进程)将 HTTP 请求里描述的信息通过标准输入 stdin 和环境变量(environment variable)传递给主页指定的 CGI 程序,并启动此应用程序进行处理(包括对数据库的处理),处理结果通过标准输出 stdout 返回给 HTTP Daemon 守护进程,再由 HTTP Daemon 进程通过 HTTP 协议返回给客户端。上面的这段话理解可能还是比较抽象,下面我们就通过一次GET请求为例进行详细说明。下面用代码来实现图中表述的功能。Web 服务器启动一个 socket 监听服务,然后在本地执行 CGI 程序。后面有比较详细的代码解读。Web 服务器代码#include #include #include #include #inc
2、lude #include #include #include #define SERV_PORT 9003 char* str_join(char *str1, char *str2);char* html_response(char *res, char *buf); int main(void) int lfd, cfd; struct sockaddr_in serv_addr,clin_addr; socklen_t clin_len; char buf1024,web_result1024; int len; FILE *cin; if(lfd = socket(AF_INET,SOCK_STREAM,0) = -1) perror(create socket failed); exit(1); memset(&serv_addr, 0, sizeof(serv_addr); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port =
3、htons(SERV_PORT); if(bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr) = -1) perror(bind error); exit(1); if(listen(lfd, 128) = -1) perror(listen error); exit(1); signal(SIGCLD,SIG_IGN); while(1) clin_len = sizeof(clin_addr); if (cfd = accept(lfd, (struct sockaddr *)&clin_addr, &clin_len) = -1) perror(接收错误n); continue; cin = fdopen(cfd, r); setbuf(cin, (char *)0); fgets(buf,1024,cin); /读取第一行 printf(n%s, buf); /= cgi 环境变量设置演示 = / 例如 GET /user.cgi?id=1 HTTP/1.1; char *delim = ; char *p; c
《深入理解FastCGI协议以及在PHP中的实现》由会员m****分享,可在线阅读,更多相关《深入理解FastCGI协议以及在PHP中的实现》请在金锄头文库上搜索。
DB2发生死锁情况时应该怎么处理
Python 为何能成最强编程语言
面试前必须要知道的Redis面试
MySQL下自动删除指定时间以前的记录的操作方法
深入理解FastCGI协议以及在PHP中的实现
MySQL数据库性能优化之硬件瓶颈分析
NoSQL数据库大全收集整理
2018 – 2019 年前端 JavaScript 面试题
PHP文件包含漏洞的形式总结
5种使用Python代码轻松实现数据可视化的方法
改进JavaScript和Bust的互操作性:深入认识wasm-bindgen组件
C#图片缩放平移从功能分析到编码实现
详解网络蜘蛛的安全隐患及预防方法
利用NAP解除安全隐患自动隐藏你的IP地址
解决分布式数据库和离线网络中原子性问题的新方法
bbed恢复数据遇到延迟块清除的问题
Oracle Data Redaction数据加密
linux下du和df结果不一致的原因及处理
基于QMP实现对qemu虚拟机进行交互
解读Java并发队列BlockingQueue
2023-08-28 7页
2023-08-15 11页
2020-05-10 4页
2020-05-10 4页
2020-05-10 6页
2020-05-10 5页
2020-05-10 5页
2020-05-10 3页
2020-05-10 5页
2020-05-10 4页