2012-09-19 16 views
8

mijam argumenty podczas tworzenia chlid procesynode.js widelec funkcji i przekazywanie argumentów do Rodziny procesu

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); 
    } 
} 

a następnie spróbuj odczytać go w Childs:

if (process.env["WORKER_NAME"] != undefined) instance.name = process.env["WORKER_NAME"]; 

ale var ISN istnieć, dlaczego?

v0.8.8 Węzeł

Odpowiedz

11

wydaje się działać dla mnie na Windows, wersja 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']); 
} 

wyjścia:

worker0 
worker1 
+0

Ale dla mnie (ja zrobiłem nowa aplikacja tak samo jak twoja) nie działa, wyjście jest osiem "niezdefiniowane". Co to może być? Pracuję pod Unix x64 (freebsd) – ElSajko

+0

Znalazłem powód, kiedy używam tego wiersza kodu, który nie działa, dlaczego ?: var server_store = new (require ("socket.io-clusterhub")); – ElSajko

+3

To dlatego, że klastra zależność socket.io-clusterhub, https://github.com/fent/clusterhub, nadpisuje metodę cluster.fork i nie przekazuje env do oryginalnej metody. Obejściem byłoby edytowanie /node_modules/clusterhub/lib/fork.js, w którym nadpisuje metodę cluster.fork, przekazując env lub raport o błędzie z powyższym projektem clusterhub i czekając, aż je naprawią –

Powiązane problemy