Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets FastCGI/SCGI预分叉_Sockets_Fastcgi_Scgi_Preforking - Fatal编程技术网

Sockets FastCGI/SCGI预分叉

Sockets FastCGI/SCGI预分叉,sockets,fastcgi,scgi,preforking,Sockets,Fastcgi,Scgi,Preforking,我一直在尝试实现一个web服务器网关(出于好玩和教育的目的),我对FastCGI/SCGI背后与fork之前模型相关的核心架构有一些疑问 FastCGI/SCGI实现如何处理fork之前场景中的通信?另外,网关只有一个套接字连接到FastCGI服务器。通常,有一个父进程接受来自网关的连接,并将工作交给一个预分叉的工作人员 既然连接是在孩子们被分叉之后建立的,那么您应该如何让孩子们使用这些套接字与网关通信?我希望我理解了这个问题 服务器套接字应由父进程创建;当它分叉时,子代继承该套接字,使其成为共

我一直在尝试实现一个web服务器网关(出于好玩和教育的目的),我对FastCGI/SCGI背后与fork之前模型相关的核心架构有一些疑问

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


既然连接是在孩子们被分叉之后建立的,那么您应该如何让孩子们使用这些套接字与网关通信?

我希望我理解了这个问题

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


作为我在多个套接字和共享套接字时讨论饥饿问题的参考(请参阅“接受序列化”),有一个选项是通过UNIX域套接字。Stevens UNP有。

这似乎足够简单,并且允许父进程更容易地执行负载平衡。这是一种特定于UNIX的设计,但这种设计首先是特定于UNIX的。了解这在UNIX系统之间的可移植性(例如,这是一种可选但常见的行为吗)?AFAIR Windows具有类似的功能,请参阅@ftartaggia answer中的链接。很好的发现。所以这个讨论绝对值得一读。我也喜欢它在UNIX和Windows系统上都能工作。有关有助于负载平衡的解决方案,请查看。