简要代码如下:
if(cluster.isMaster){
cluster.fork();
cluster.fork();
}else{
http.createServer(function(){
...
}).bind(8080);
}
想问一下,为什么server的创建要写在else里面?那意思不就是 在子进程中创建server,运行了两次,就是创建了2个server?而且都是绑定的同样的端口号?求指点。
PHP中文网2017-04-17 16:03:28
내가 이해하는 바는 다음과 같습니다.
파일이 실행되기 시작하면
cluster.isMaster가 true입니다
그런 다음 실제 브랜치를 입력하고 포크합니다
포크할 때마다 새 스레드가 생성됩니다. . 이 스레드는 파일을 처음부터 실행합니다.
이때 Cluster.isMaster가 false입니다
false 브랜치를 입력하세요
실행하여 서버를 생성합니다.
동일한 포트를 수신하는 이유는
실제로는 메인 스레드만 이 포트를 수신합니다.
클러스터 메인 스레드는 배포자를 구현합니다.
이 포트의 다른 스레드에 요청을 배포합니다
高洛峰2017-04-17 16:03:28
마스터 프로세스에서 포트를 생성하고 수신합니다. 요청이 서버 마스터 프로세스에 도달하면 이를 수락하고 작업자 프로세스에 배포합니다.