FastCGI, SCGI,

6
我正在用C语言编写一个web服务器,需要找到一种使用CGI来执行动态内容的服务器端方法。
我看了FastCGI协议,感觉很烦人。它让我想起在课堂上将ASCII转换为UTF-8和反向操作时所做的位操作(当时似乎没什么用,但现在可能不一样)。
我发现了一个用PHP编写的很棒的库,我可以通过启动“php-cgi -b localhost:8888”来开始与它通信。显然,我也希望用C语言实现这个功能。
如果有人能找到一个FastCGI客户端库,我会非常感激。如果没有,那我愿意通过编写一个来为开源社区做出贡献。
此外,我该如何使用SCGI?几乎找不到关于它的文档(无论我去哪里寻找)。我应该连接到哪个套接字?请求应该发送到哪里?
另外,“php-cgi”只适用于PHP,那么对于Perl、Python等语言呢?
再次感谢。

1
在FastCGI主页上提到了一些库。http://www.fastcgi.com/drupal/node/5 开发工具包应该包括服务器半部分,对吗? - mario
1
是的,那些是针对服务器的,但我需要一个针对客户端的库。 - Preetam Jinka
1
但是客户端实现在这里是确定的 http://www.fastcgi.com/devkit/doc/fcgi-devel-kit.htm 。无论如何,SCGI http://python.ca/scgi/protocol.txt 协议非常简单,即使没有参考代码也可以实现。 - mario
SCGI 看起来很简单,但我应该把这些头信息发送到哪里呢?是否需要像 php-cgi 一样启动某种服务? - Preetam Jinka
1
SCGI与FastCGI没有什么不同。每种语言都需要自己的守护进程,您可以运行多个。接受CGI请求基本上就是它们所做的事情。唯一的区别是套接字和标头格式,而不是CGI stdin管道和环境变量。 - mario
显示剩余4条评论
1个回答

5

mario在问题评论中说:

  • FastCGI主页上提到了一些库。 http://fastcgi.com/drupal/node/5。开发工具包应该包括服务器。
  • 客户端实现也包含在其中。 http://fastcgi.com/devkit/doc/fcgi-devel-kit.htm
  • SCGI http://python.ca/scgi/protocol.txt非常简单,即使没有参考代码也可以实现。
  • 你需要一个作为守护进程运行并在约定端口上接受套接字连接的SCGI客户端(4000或5000似乎很常见)。
  • SCGI与FastCGI没有任何区别。每种语言都需要自己的守护进程,您可以运行多个。而且接受CGI请求几乎是他们所做的所有操作。唯一的区别是套接字和标头格式,而不是CGI stdin管道和环境变量。

此外,我想补充的是:CGI(正是问题所要求的)在其工作模型上与FCGI和SCGI不同。很容易将一个误认为另一个。幸运的是,Preetam似乎要求FCGI和SCGI。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接