我一直在尝试实现Web服务器网关(出于娱乐和教育目的),并且对于前叉模型,我对FastCGI/SCGI背后的核心体系结构有一些疑问。
FastCGI/SCGI实现如何处理前叉场景中的通信? AFAIK,网关只有一个套接字可以连接到FastCGI服务器。通常,有一个父进程接受来自网关的连接,并将工作移交给一个预分支的工作人员。
由于连接是在 child fork 之后建立的,您应该如何让 child 使用这些套接字与网关进行通信?
最佳答案
我希望我理解这个问题。
服务器套接字应该由父进程创建;当它 fork 时,子代继承该套接字,使其成为共享资源。然后,我想,每个 child 都会尝试同时接受()连接。
作为引用,我发现this document(请参阅“接受序列化”)讨论了在多个套接字上监听时的饥饿问题,以及在共享套接字上的this SO discussion
关于sockets - FastCGI/SCGI前叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6797222/