NodeJS – 如何将MySQL连接从主进程传递给subprocess?

我尝试了以下服务器+工人代码,但它根本无法工作。

server.js:

var net = require('net'); var mysql = require('mysql'); var cp = require('child_process'); var serverPort=20460; var connection = mysql.createConnection({ database : 'test', host : 'localhost', user : 'root', password : '' }); var server = net.createServer(function (socket){ socket.on('data',function(data){ console.log("Server received: ",data); var child = cp.fork('./worker'); child.send({'connection': connection}); }); }); connection.connect(function(err, two){ if (!err) { server.listen(serverPort); } }); 

worker.js:

 process.on('message', function(obj) { //Will add more code to it later... console.log("CHILD::Received: ",obj); }); 

在subprocess的console.log()中给我下面的错误:

 JSON.stringify, avoid TypeError: Converting circular structure to JSON 

有什么build议么 ?

我这样做的方式是让worker.js成为真正的“应用程序”,server.js只是设置集群。 我没有testing过这个,但是按照这个方法:

 // worker.js var connection = require('./db'); var net = require('net'); var server = net.createServer(function (socket){ socket.on('data',function(data){ console.log("Server received: ",data); connection.connect(); connection.query(/* your query here for inserting data */); connection.end(); }); }); // db.js var mysql = require('mysql'); var serverPort=20460; var connection = mysql.createConnection({ database : 'test', host : 'localhost', user : 'root', password : '' }); module.exports = connection; // server.js var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died'); }); } else { require('./worker'); } 

对于奖励积分,您可以使用类似节点池的东西来创build连接池,并让db模块返回池中的连接。