nodejs 启动多个子进程

//保存被子进程实例数组
var workers = {};

//这里的被子进程理论上可以无限多
var appsPath = [__dirname+'/service/clickService.js',__dirname+'/service/showService.js'];

var createWorker = function(appPath){

    //保存spawn返回的进程实例
    var worker = spawn('node', [appPath]);

    //监听子进程exit事件
    worker.on('exit',function(){
        logger.info('worker:' + worker.pid + 'exited');
        delete workers[worker.pid];
        createWorker(appPath);
    });
    workers[worker.pid] = worker;
    logger.info('create worker:' + worker.pid);
};

//启动所有子进程
for (var i = appsPath.length - 1; i >= 0; i--) {
    createWorker(appsPath[i]);
}

//父进程退出时杀死所有子进程
process.on('exit',function(){
    logger.info('parent exit.');
    for(var pid in workers){
        workers[pid].kill('SIGHUP');
    }
});

 

posted @ 2016-10-26 14:33  wujinfeng  阅读(1913)  评论(0)    收藏  举报