我有一个网站,每个网页都被编译成一个二进制文件(我有100个网页,因此我有100个二进制文件)。 Apache的.htaccess包含“ SetHandler cgi-script”行,该行指示apache在请求二进制文件(网页)时使用CGI。

如何修改此网站以使用FastCGI代替CGI?

我是否只需要包含此标头并在100个二进制文件的每一个中使用此while循环(FastCGI.com),然后将.htaccess修改为“ SetHandler fastcgi-script”?

#include "fcgi_stdio.h" // instead of stdio.h
while(FCGI_Accept() >= 0)


那么FastCGI将如何工作呢? Apache将使用整个网站的1个持久性进程来调度网页,或者100个二进制文件中的每一个都将有1个持久性进程?

最佳答案

FastCGI脚本是在循环中侦听连接的网络服务器。 Web服务器将请求转发到FCGI服务器,后者通过套接字连接发送一些动态生成的内容。因此,FCGI脚本比CGI更快,因为它不会为每个请求重新生成。

我不明白为什么您需要100页的100个二进制文件。一个脚本可以根据一些请求参数生成100页的内容。 FCGI服务器还应该很好地扩展多个连接,因为通常是通过轮询套接字文件描述符进行的。 (查看实现代码以确保做到这一点)。

要生成100个页面,您不一定需要100个if语句。考虑以下伪代码:

hash_table page_generators; // map page types to function objects (or function pointers)
page_generators["login_page"] = handle_login_page_fn;
page_generators["contact_page"] = handle_contact_page_fn;
// ... and so on

// request handler
page_type = request.get("page_type");
fn = page_generators[page_type];
if (fn == NULL)
    return "<html><body>Invalid request</body></html>";
else
    return fn(request);

关于c - 如何在C中使用FastCGI?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4113791/

10-11 23:06
查看更多