[db:作者] 发表于 2023-5-29 00:58:16

iis下的FastCGI开发初试

FastCGI的好处是模块的独立性,接口的统一性。在fastcgi程序中出现运行故障或者处理延迟,不会影响网站的其余部分。在iis下作了尝试。开发包实现了fastcgi协议。fastcgi协议是fastcgi程序和web server之间的TCP数据交换协议。原来的fastcgi.com的资料已经转移到github上。不过考虑到以后可能需要修改为64位程序,所以采用visual studio 2019来编译。生成fastcgi.lib后,再创建fastcgi应用程序,选择控制台项目。iis中配置“处理程序映射”,“添加模块映射”,选择“fastcgimodle”,建立请求路径到cgi文件的关联。
FastCGI的好处是模块的独立性,接口的统一性。在fastcgi程序中出现运行故障或者处理延迟,不会影响网站的其余部分。
在iis下作了尝试。
先下载开发包。开发包实现了fastcgi协议。fastcgi协议是fastcgi程序和web server之间的TCP数据交换协议。
原来的fastcgi.com的资料已经转移到github上。通过搜索下载了fcgi2-master.zip文件。https://github.com/FastCGI-Archives/fcgi2
这是c语言的开发包,32位的。里面有vc6的dsp文件。不过考虑到以后可能需要修改为64位程序,所以采用visual studio 2019来编译。
利用libfcgi目录里的.c文件和include目录的.h文件建立一个工程,目标是生成lib文件。
fcgiapp.c是底层协议实现,fcgi_stdio.c是高层封装。os_win32.c是windows下编译的底层支持。
编译时选择X86平台即32位。字符集选择多字节。
全程序优化选择“使用链接时间代码生成”。(把需要的库函数都静态链入)
release版本运行库选择“多线程”,不要带dll。
字符集选用多字节。如用unicode则出现警告:从“char *”到“LPCWSTR”的类型不兼容
编译时出现很多警告。这是因为这些是vc6时代的文件。可针对警告,上网搜索,一一解决。具体也有些忘了, 比如c文件中加入:
#define _CRT_SECURE_NO_WARNINGS
生成fastcgi.lib后,再创建fastcgi应用程序,选择控制台项目。项目配置同上。
#include “fcgi_stdio.h”
#pragma comment(lib,”fastcgi.lib”)
#pragma comment(lib,”ws2_32.lib”)
主循环:
while (FCGI_Accept() >= 0) {
char* pinput=getenv(“QUERY_STRING”); //get模式下获取输入
printf(“Content-type:text/html\n\n”);//输出页面开始
printf(…);//输出内容
}
printf已被重定义,实际上是向webserver发送数据。
编译得到exe文件。iis中配置“处理程序映射”,“添加模块映射”,选择“fastcgimodle”,建立请求路径到cgi文件的关联。即可。
===
网上还有c++的库,没有研究。
页: [1]
查看完整版本: iis下的FastCGI开发初试