关于 reusePort 和 listen() 的问题

0

当 reusePort=true 时,listen() 在子进程中执行;当 reusePort=false 时,listen() 在主进程执行。
如果系统不支持 reusePort:
1)listen() 改为在子进程中执行,有什么区别?
2)执行 stream_context_set_option($this->context, 'socket', 'so_reuseport', 1);  会产生不良结果吗?
 

已邀请:

blogdaren - 专注C编程、PHP内核、LINUX、VIM【http://www.phpcreeper.com】

赞同来自:

1、true === reusePort 代表启用端口复用,正常情况下不同的多个进程是无法绑定监听同一个端口的,但是启用端口复用可以允许多个不同的进程监听同一个端口,而且会避免惊群效应。但启用的前提是PHP_VERSION >= 7.0
2、 stream_context_set_option($this->context, 'socket', 'so_reuseport', 1) 这是针对 socket 启用端口复用时的一个必备选项设置而已。

随某人 - 若无闲事挂心头,便是人间好时节.

赞同来自:

大佬,那么一个请求过来,比如开了 5 个子进程,哪个进程执行?轮询,还是一个一个执行.

要回复问题请先登录注册