c中的FastCGI分支

| 我目前正在开发高负载项目,我需要使用C / FastCGI / nginx组合。 问题是,我需要我的FastCGI应用程序在线程/进程中运行。 我知道两种方法可以做到这一点: 1)编译程序,然后使用spawn-fcgi派生进程。 (我不能使用这个) 2)运行
FCGX_Init()
,然后在
while (FCGX_Accept_r(&request) >= 0)
之前先进行10次处理 3)在
while (FCGX_Accept_r(&request) >= 0)
之后运行pthread 所以,我的问题是:whis是运行fastcgi应用程序的最快方法。我可以在此之后预分叉fastcgi应用程序:
int sock = FCGX_OpenSocket(\":9000\", 10);
FCGX_InitRequest(&request, sock, 0);
10个进程可以侦听单个套接字吗?如果我正在运行N个进程,我是否必须使用线程?这样就足够了吗?     
已邀请:
        我不知道您正在使用的FastCGI API,但通常您无法将文件描述符(即套接字)传递给另一个进程,除非在您分叉之前打开了该描述符。进程具有独立的文件描述符表。线程将共享同一文件描述符表,因为它们处于同一进程中。 据我所知,一次只能在一个端口上侦听一个进程。通常要做的是只有一个线程,其唯一的工作就是监听连接。当连接成功时,通过让线程接管接受的套接字(而不是侦听套接字)直到套接字关闭,连接被接受并移交给池中的下一个工作线程。侦听器线程立即返回侦听连接。 这应该给您最小的开销。     

要回复问题请先登录注册