2012-09-19 2 views
8
내가 인수 할 때 차일 그것을 읽으려고 다음 chlid - 프로세스
if (cluster.isMaster) { 
    for (var i = 0; i < os.cpus().length; i++) { 
     var new_worker_env = {}; 
     new_worker_env["WORKER_NAME"] = "worker" + i; 

     var new_worker = cluster.fork(new_worker_env); 
    } 
} 

아동 프로세스

를 생성하고 전달할

에 포크 기능과 전달 인자를 Node.js를 왜 존재하지?

답변

11

Windows에서 나를 위해 작동하는 것 같다 노드 v0.8.8, Node.js를 버전 0.8.8

var cluster = require('cluster'), 
    os  = require('os'); 

if (cluster.isMaster) { 
    for (var i = 0; i < os.cpus().length; i++) { 
     var new_worker_env = {}; 

     new_worker_env["WORKER_NAME"] = "worker" + i; 

     var new_worker = cluster.fork(new_worker_env); 
    } 
} else { 
    console.log(process.env['WORKER_NAME']); 
} 

출력 :

worker0 
worker1 
+0

그러나 나 (내가이 만든 너의 것과 똑같은 새로운 응용 프로그램) 작동하지 않는다. 출력은 8 개의 "정의되지 않은"것이다. 그것은 무엇일까요? 유닉스 x64 (freebsd)에서 작동합니다. – ElSajko

+0

이 코드 줄을 사용할 때 이유를 찾았습니다, 왜? : var server_store = new (require ("socket.io-clusterhub")); – ElSajko

+3

socket.io-clusterhub 종속성 clusterhub (https://github.com/fent/clusterhub)가 cluster.fork 메소드를 덮어 쓰고 원래 방법으로 env를 전달하지 않기 때문입니다. 해결 방법은 /node_modules/clusterhub/lib/fork.js를 편집하여 cluster.fork 메서드를 오버라이드하여 env를 전달하거나 위의 clusterhub 프로젝트에 버그 보고서를 제출하고 수정을 기다립니다. –

관련 문제