2012-09-19 12 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 अस्तित्व में नहीं है, क्यों?

नोड v0.8.8

उत्तर

11

विंडोज पर मेरे लिए काम करने के लिए लगता है, 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

लेकिन मेरे (के लिए मैं कर दिया है नया ऐप आपके जैसा ही है) यह काम नहीं करता है, आउटपुट आठ "अपरिभाषित" है। यह क्या हो सकता है मैं यूनिक्स x64 (freebsd) – ElSajko

+0

के तहत काम करता हूं, मुझे कारण मिला, जब मैं कोड की इस पंक्ति का उपयोग करता हूं तो यह काम नहीं करता है, क्यों ?: var server_store = new (आवश्यकता है ("socket.io-clusterhub")); – ElSajko

+3

इसकी वजह यह है क्योंकि socket.io-clusterhub निर्भरता क्लस्टरहब, https://github.com/fent/clusterhub, cluster.fork विधि को ओवरराइट करता है और मूल विधि में env को पास नहीं करता है। एक वर्कअराउंड /node_modules/clusterhub/lib/fork.js को संपादित करना होगा जहां यह env को पास करने के लिए cluster.fork विधि को ओवर-राइड करता है या उपरोक्त क्लस्टरहब प्रोजेक्ट के साथ एक बग रिपोर्ट फ़ाइल करता है और उन्हें ठीक करने के लिए प्रतीक्षा करता है –

संबंधित मुद्दे