如何用c写fastcgi运行在apache下面

有个需求想测试一下用apache+cgi做个接口(因为要用c调用本地的一些东西,用其他语言不方便,并不是用过时技术),研究了一番,写cgi是挺简单的。但是用apipost测试响应时间需要400-500ms。而html只需要90-150ms。我记忆中还知道有个fastcgi,说是比cgi快几倍。最简单的能到html的响应速度。

步骤一:

httpd.apache.org (或www.apachelounge.com/download/)下载httpd-2.4.46-win64-VS16.zip 与 mod_fcgid-2.3.10-win64-VS16.zip

前一个是apahce安装,怎么安装搜教程。

后面一个fastcgi的模块。把里面已经编译好的mod_fcgid.so复制到apache的mudules下面。

配置apache的httpd.conf,添加: LoadModule fcgid_module modules/mod_fcgid.so

apache配置httpd.conf
AddHandler fcgid-script .exe .cgi             #请把AddHandler cgi-script .exe .cgi  那行注释掉。
# 每个FCGI进程请求数
FcgidMaxRequestsPerProcess 1024 
# 最大FCGI进程数
FcgidMaxProcesses 4
FcgidIOTimeout 180
FcgidIdleTimeout 240

记得配置。否则写的exe仍然运行在cgi模式,而不是fastcgi。怎么知道呢。

如下代码:

int randFlag = 0;
int main (){
    srand((unsigned int)time(NULL));
    randFlag = rand() % 30;

    while(FCGI_Accept() >= 0){

        //printf randFlag 就可以知道。如果测试的话,应该这个值一直不变才对。如果变化。则工作在cgi模式。实际测试 cgi响应时间约71ms。fastcgi响应时间约49ms。如果在负荷很重的情况下,fastcgi应该很有优势。

    }

}

步骤二:

下载:fcgi-2.4.1-SNAP-0910052249.tar.gz  之前的域名 fastcgi.com已经失效,请从如下网址下载FastCGI.com ArchivesThis is the Github FastCGI Archives of FastCGI.com site.https://fastcgi-archives.github.io/

解压缩后我用vs2010编译。打开:fcgi-2.4.1-SNAP-0910052249\Win32\FastCGI.dsw里面有好几个项目,编译:libfcgi这个项目得到库文件lib和dll文件。下一步写代码时需要加入项目中。

步骤三:开发

可以参考上面第二个步骤中的echo_cpp项目,它演示了最基本的写法。(写的有点啰嗦)

更简单一些可以参考samples下面的echo.c。其他代码部分就是自己发挥了。但是基本框架其实就是很简单。基本原则就是进程常驻内存,所以能提高处理速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值