c语言实现fastcgi
作者
QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118
参考
fastcgi官网
网关协议CGI、FastCGI、WSGI的区别
uWSGI项目
FastCGI
使用VS2010的nmake命令编译MakeFile流程
visual studio 2017 Community nmake
Fastcgi
fastcgi c/c++ API 说明
c 语言写的fastcgi 程序
用C语言开发FastCGI应用程序——fcgi_stdio包API
fcgi程序两种编写风格
FastCGI+lighttpd开发之介绍和环境搭建
nginx+spawn-fcgi+demo+fcgi库函数
fcgi原理和异步模型
FCGI个人学习记录
HttpFcgi模块
使用
fastcgi官网迁移到了github了,下载FastCGI Developer’s Kit,编译,
$ ./autogen.sh
$ ./configure --prefix=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/install LDFLAGS=-L/lib/w32api
$ make
$ make install
$ ls install
bin include lib
$ ls install/bin/
cgi-fcgi.exe cygfcgi++-0.dll cygfcgi-0.dll
$ ls install/include/
fastcgi.h fcgi_config.h fcgi_stdio.h fcgiapp.h fcgimisc.h fcgio.h fcgios.h
$ ls install/lib
libfcgi.a libfcgi.dll.a libfcgi.la libfcgi++.a libfcgi++.dll.a libfcgi++.la pkgconfig
$ ls examples/ | grep exe
authorizer.exe
echo.exe
echo-cpp.exe
echo-x.exe
log-dump.exe
size.exe
threaded.exe
配置nginx.conf,
location = /cmd {fastcgi_pass 127.0.0.1:8088;fastcgi_index index.cgi;include fastcgi.conf;
}
执行,
$ ../spawn-fcgi-1.6.4/src/spawn-fcgi.exe -a 127.0.0.1 -p 8088 -f examples/echo.exe -n
$ spawn-fcgi: child spawned successfully: PID: 282
$ kill 282
浏览器输入http://localhost/cmd
,
关注一下html输出的这些环境变量,开发一些特殊功能时可能会用到,
<title>FastCGI echo</title><h1>FastCGI echo</h1>
Request number 2, Process ID: 293<p>
No data from standard input.<p>
Request environment:<br>
<pre>
FCGI_ROLE=RESPONDER
SCRIPT_FILENAME=C:\dog\software\nginx-1.14.2/html/cmd
QUERY_STRING=
REQUEST_METHOD=GET
CONTENT_TYPE=
CONTENT_LENGTH=
SCRIPT_NAME=/cmd
REQUEST_URI=/cmd
DOCUMENT_URI=/cmd
DOCUMENT_ROOT=C:\dog\software\nginx-1.14.2/html
SERVER_PROTOCOL=HTTP/1.1
REQUEST_SCHEME=http
GATEWAY_INTERFACE=CGI/1.1
SERVER_SOFTWARE=nginx/1.14.2
REMOTE_ADDR=127.0.0.1
REMOTE_PORT=51161
SERVER_ADDR=127.0.0.1
SERVER_PORT=80
SERVER_NAME=localhost
REDIRECT_STATUS=200
HTTP_HOST=localhost
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=0
HTTP_UPGRADE_INSECURE_REQUESTS=1
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
HTTP_ACCEPT_ENCODING=gzip, deflate, br
HTTP_ACCEPT_LANGUAGE=zh-CN,zh;q=0.9
</pre><p>
Initial environment:<br>
<pre>
USERDOMAIN=DESKTOP-4KV9JL3
OS=Windows_NT
COMMONPROGRAMFILES=C:\Program Files\Common Files
PROCESSOR_LEVEL=6
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
CommonProgramW6432=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
LANG=zh_CN.UTF-8
TZ=Asia/Shanghai
HOSTNAME=DESKTOP-4KV9JL3
PUBLIC=C:\Users\Public
OLDPWD=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin
USERNAME=qinge
LOGONSERVER=\\DESKTOP-4KV9JL3
PROCESSOR_ARCHITECTURE=AMD64
LOCALAPPDATA=C:\Users\qinge\AppData\Local
COMPUTERNAME=DESKTOP-4KV9JL3
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
USER=qinge
!::=::\
SYSTEMDRIVE=C:
USERPROFILE=C:\Users\qinge
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
SYSTEMROOT=C:\Windows
USERDOMAIN_ROAMINGPROFILE=DESKTOP-4KV9JL3
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 61 Stepping 4, GenuineIntel
NVM_SYMLINK=C:\Program Files\nodejs
PWD=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/bin
HOME=/home/qinge
TMP=/tmp
OneDrive=C:\Users\qinge\OneDrive
PROCESSOR_REVISION=3d04
FPS_BROWSER_USER_PROFILE_STRING=Default
PROFILEREAD=true
NUMBER_OF_PROCESSORS=4
ProgramW6432=C:\Program Files
COMSPEC=C:\Windows\system32\cmd.exe
APPDATA=C:\Users\qinge\AppData\Roaming
SHELL=/bin/bash
TERM=xterm
WINDIR=C:\Windows
NVM_HOME=C:\Users\qinge\AppData\Roaming\nvm
ProgramData=C:\ProgramData
SHLVL=1
MINTTY_SHORTCUT=/cygdrive/c/Users/Public/Desktop/Cygwin64 Terminal.lnk
PRINTER=OneNote
PROGRAMFILES=C:\Program Files
ALLUSERSPROFILE=C:\ProgramData
TEMP=/tmp
NO_XILINX_DATA_LICENSE=HIDDEN
DriverData=C:\Windows\System32\Drivers\DriverData
SESSIONNAME=Console
ProgramFiles(x86)=C:\Program Files (x86)
PATH=/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/libfcgi/.libs:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/libfcgi/.libs:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/lib:/cygdrive/c/dog/program/cgi/fcgi2-2.4.2/bin/bin:/usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Programs/Microsoft VS Code/bin:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37/Scripts
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
HOMEDRIVE=C:
INFOPATH=/usr/local/info:/usr/share/info:/usr/info
HOMEPATH=\Users\qinge
ORIGINAL_PATH=/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Windows/System32/OpenSSH:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Users/qinge/AppData/Roaming/nvm:/cygdrive/c/Program Files/nodejs:/cygdrive/c/Users/qinge/AppData/Local/Programs/Microsoft VS Code/bin:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37:/cygdrive/c/Users/qinge/AppData/Local/Programs/Python/Python37/Scripts
EXECIGNORE=*.dll
_=./cgi-fcgi.exe
BIN_SH=xpg4
DUALCASE=1
</pre><p>
表单
axios发送表单,
onSubmit () {console.log('log: ' + JSON.stringify(this.form))this.$http.get('api/cmd?json=' + encodeURIComponent(JSON.stringify(this.form))).then((response) => {console.info(decodeURIComponent(response.body))}, (response) => {console.error(response)})}
表单在环境变量的QUERY_STRING中,测试,
读写文件
读写文件请按如下方式打开,使用输入输出流不行,待定位。
open(fileNamePtr, O_RDONLY, (S_IRGRP | S_IROTH | S_IRUSR));
open(fileNamePtr, O_WRONLY | O_CREAT, (S_IWGRP | S_IWOTH | S_IWUSR));
c语言实现fastcgi相关推荐
- C语言开发fastcgi初探(一)
为什么80%的码农都做不了架构师?>>> 这几天闲着没事干,虽然开学了,但是到下周才有课上.再者,研二了,也没啥课了,导师又不让我出去工作,我那个纠结啊.算鸟,那就自己折腾点东 ...
- php中fastcgi和php-fpm是什么东西
看到一个fastcig和php-fpm的文章,其中的关系讲解的很清楚.地址:https://www.zybuluo.com/phper/note/50231 最近在研究和学习php的性能方面的知识,看 ...
- 讲php fpm的书,细说PHP-fpm
最近在研究PHP的源码,有时候会延伸到很多东西.这里就专程找了下php-fpm的内容学习下. 是什么? 在理解php-fpm之前,我们要先搞清楚几个关键词以及他们之间的关系:CGI FastCGI p ...
- nginx 如何解析php文件php-fpm的解释
nginx 如何解析php文件php-fpm的解释 首先从nginx说起,nginx的配置文件,/usr/local/nginx/conf/nginx.conf location ~ \.php {r ...
- php有哪几种运行环境,php有哪些运行环境
1.nginx swoole swoole是一个异步.并行.高性能的网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器.swoole内置了http/websocket服务器端和客户端, ...
- 【fcgi如何处理http post上传文件】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.fcgi是什么? 二.cgicc是什么? 三.使用 总结 前言 最近在开发一个项目,使用比较老的技术fastcgi ...
- 第七课 Python Web企业门户网站-部署
目录 7.1 Python WSGI部署原理 7.2 本地服务器部署 7.2.1 准备部署环境 7.2.2 安装和配置IIS 7.2.3 开放端口 7.2.4 部署 7.3 云服务器部署 7.3.1 ...
- lighttpd+fastcgi+C语言程序
1.安装环境Ubuntu16.04 2.安装lighttpd apt install lighttpd 3.安装fastcgi 下载源码:fastcgi-2.4.1-SNAP-0910052249.t ...
- Lighttpd+fastcgi+C语言
lighttpd+fastcgi+C语言 一.简述 记--lighttpd+fastcgi ...
最新文章
- MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比
- 强大的SPGridView
- Java虚拟机:深入详细分析Java ClassLoader原理与源码
- Spring MVC 入门笔记
- 微信跳一跳高分系列一:解读 adb 工具
- [数组] 连续子数组的最大和 --- LeetCode53
- 鬼泣最稳定的服务器,DNF95级版本国服环境下,鬼泣和红神谁更强?深度对比客观分析!...
- jquery 处理json字符串
- 2016 网易校招内推C/C++第二场8.6
- 链表常见操作java实现二:反转链表,从尾到头倒序遍历
- PHPExcel存放多个sheet报错: Invalid parameters passed.
- 基于ssm java医院病历管理系统
- 统计学常用的数据分析方法总结
- linux 交叉编译器作用,Linux下交叉编译器学习
- AUTOCAD——图形的输入与输出
- 未来的计算机 展望未来作文,展望未来作文素材_2020展望未来作文精选5篇
- 中小板企业上市要走哪些流程
- 桂林电子科技大学计算机考研资料汇总
- 如何自己编写字符串处理函数
- 2019年暑假 纪中培训总结