在workerman中用self::log(getmypid())做了下日志,启动的时候会生成8个子进程。
2016-11-09 17:42:06 pid:32878 Workerman start in DEBUG mode
2016-11-09 17:42:06 pid:32879 启动子进程32879
2016-11-09 17:42:06 pid:32880 启动子进程32880
2016-11-09 17:42:06 pid:32881 启动子进程32881
2016-11-09 17:42:06 pid:32882 启动子进程32882
2016-11-09 17:42:06 pid:32883 启动子进程32883
2016-11-09 17:42:06 pid:32884 启动子进程32884
2016-11-09 17:42:06 pid:32886 启动子进程32886
2016-11-09 17:42:06 pid:32885 启动子进程32885
然后telnet 0.0.0.0 2345,在acceptConnection方法中会打印三个进程号。(为什么是3个呢?)
2016-11-09 17:42:14 pid:32886 检测到连接32886
2016-11-09 17:42:14 pid:32885 检测到连接32885
2016-11-09 17:42:14 pid:32884 检测到连接32884
在telnet中多次输入内容,回车会有同一个进程响应
2016-11-09 17:42:17 pid:32886 检测到响应32886
2016-11-09 17:42:18 pid:32886 检测到响应32886
2016-11-09 17:42:20 pid:32886 检测到响应32886
2016-11-09 17:42:21 pid:32886 检测到响应32886
2016-11-09 17:42:22 pid:32886 检测到响应32886
2016-11-09 17:42:23 pid:32886 检测到响应32886
请教这里面的原理是什么?
acceptConnection时有三个进程响应是因为发生了惊群效应。
惊群效应参见 http://wenda.workerman.net/?/question/179
最终只有一个进程acceptConnection成功,以后都由这个进程负责处理这个telnet链接上发来的数据,
所以一个telnet客户端发送的内容只有一个进程响应
感谢walkor指点^^
不客气