FastCGI / SCGI 预分叉

发布于 2024-11-25 18:20:20 字数 235 浏览 3 评论 0原文

我一直在尝试实现一个 Web 服务器网关(出于娱乐和教育目的),并且我对 FastCGI/SCGI 背后的核心架构与预分叉模型有一些疑问。

FastCGI/SCGI 实现如何处理预分叉场景中的通信? AFAIK,网关只有一个套接字连接到 FastCGI 服务器。通常,有一个父进程接受来自网关的连接,并将工作移交给预先分叉的工作人员之一。

由于连接是在子级分叉之后建立的,因此您应该如何让子级使用这些套接字与网关进行通信?

I've been trying to implement a web server gateway (for fun and educational purposes) and I have some questions about the core architecture behind FastCGI/SCGI with respect to the pre-fork model.

How do FastCGI/SCGI implementations handle communication in pre-fork scenarios? AFAIK, the gateway only has one socket to connect to the FastCGI server. Normally, there is a parent process that accepts connections from the gateway and hands off the work to one of the pre-forked workers.

Since the connections are established after the children are forked, how are you supposed to have the children use these sockets to communicate with the gateway?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

还如梦归 2024-12-02 18:20:20

我希望我理解了这个问题。

服务器套接字应该由父进程创建;当它分叉时,子进程继承该套接字,使其成为共享资源。然后,我想,每个孩子都会尝试同时接受()连接。

作为参考,我找到了此文档(请参阅“接受序列化") 讨论监听多个套接字时的饥饿问题,以及 这个关于共享套接字的讨论

I hope I understood the question.

The server socket should be created by the parent process; when it forks, children inherit that socket making it a shared resource. Then, I suppose, each child tries to accept() connections concurrently.

As a reference I found this document (see "accept serialization") discussing starvation issue when listening on multiple sockets, and this SO discussion on sharing sockets

夏末的微笑 2024-12-02 18:20:20

一种选择是通过 UNIX 域套接字文件描述符传递。 Stevens UNP 有基本示例

One options is file descriptor passing over UNIX domain socket. Stevens UNP has basic example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文