2012-09-19 5 views
8

ich Argumente, wenn übergeben chlid-Prozessenode.js Gabel Funktion und Argumente an Kind-Prozess

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

und dann versuchen, schaffen es in Childs zu lesen:

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

aber var isn existiere nicht, warum?

Knoten v0.8.8

Antwort

11

scheint für mich auf Windows, Node.js Version 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']); 
} 

Ausgänge zu arbeiten:

worker0 
worker1 
+0

Aber für mich (ich habe gemacht neue App wie deine) funktioniert es nicht, Ausgabe ist acht "undefined". Was darf es sein? Ich arbeite unter Unix x64 (freebsd) – ElSajko

+0

Ich fand Grund, wenn ich diese Codezeile verwenden, funktioniert es nicht, warum ?: var server_store = new (require ("socket.io-clusterhub")); – ElSajko

+3

Das ist, weil die socket.io-clusterhub-Abhängigkeit clusterhub, https://github.com/fent/clusterhub, die cluster.fork-Methode überschreibt und das env nicht an die ursprüngliche Methode übergibt. Eine Problemumgehung wäre das Bearbeiten von /node_modules/clusterhub/lib/fork.js, wobei die Methode cluster.fork überschrieben wird, um das env zu übergeben oder einen Fehlerbericht mit dem obigen Clusterhub-Projekt zu erstellen und darauf zu warten, dass sie es beheben –

Verwandte Themen