2012-09-19 7 views
8

Paso argumentos crean cuando chlid-procesosNode.JS función y el paso de argumentos de la horquilla a hijo-proceso

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

y luego tratar de leerlo en Childs:

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

pero esto var ISN existo, ¿por qué?

v0.8.8 Nodo

Respuesta

11

parece funcionar para mí en Windows, versión 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']); 
} 

salidas:

worker0 
worker1 
+0

Pero para mí (que he hecho nueva aplicación igual que la tuya) no funciona, la salida es ocho "indefinida". ¿Qué puede ser? Trabajo bajo Unix x64 (freebsd) – ElSajko

+0

Encontré razón, cuando uso esta línea de código no funciona, ¿por qué ?: var server_store = new (require ("socket.io-clusterhub")); – ElSajko

+3

Se debe a que la dependencia socket.io-clusterhub clusterhub, https://github.com/fent/clusterhub, sobrescribe el método cluster.fork y no pasa el entorno al método original. Una solución alternativa sería editar /node_modules/clusterhub/lib/fork.js donde sobrepase el método cluster.fork para pasar el env o archivo de un informe de error con el proyecto clusterhub anterior y esperar a que lo arreglen –

Cuestiones relacionadas