Skip to content

Instantly share code, notes, and snippets.

@nomanmaqsood
Last active July 26, 2016 11:20
Show Gist options
  • Save nomanmaqsood/dc33d2b15091167d597347cd2fb2acfd to your computer and use it in GitHub Desktop.
Save nomanmaqsood/dc33d2b15091167d597347cd2fb2acfd to your computer and use it in GitHub Desktop.
"use strict"
// Include the cluster module
var cluster = require('cluster');
// Code to run if we're in the master process
if (cluster.isMaster) {
console.log("Master");
// Count the machine's CPUs
var cpuCount = require('os').cpus().length;
// Create a worker for each CPU
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
cluster.on('exit', function(deadWorker, code, signal) {
// Restart the worker
var worker = cluster.fork();
// Note the process IDs
var newPID = worker.process.pid;
var oldPID = deadWorker.process.pid;
// Log the event
console.log('worker '+oldPID+' died.');
console.log('worker '+newPID+' born.');
});
// Code to run if we're in a worker process
} else {
var express = require ("express");
var logger = require ("morgan");
var bodyParser = require ("body-parser");
var path = require('path');
var app = express ();
var cron = require ("./helpers/Cron");
var routes = require ("./routes")(express);
var schedule = require('node-schedule');
//var server = require('http').createServer(app);
//var socket = require('socket.io')(server);
var cpuCount = require('os').cpus().length;
console.log(cpuCount);
app.use (bodyParser.json ());
app.use (bodyParser.urlencoded ({ extended: false}));
app.use(express.static('../itboost-front'));
app.use(function (req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE");
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With, content-type, token");
res.setHeader("Access-Control-Allow-Credentials", true);
next();
});
if(process.env.SRV_TYPE == "cron"){
var rule = new schedule.RecurrenceRule();
rule.second = 5;
var j = schedule.scheduleJob("* * * * * *", function(){
cron()
//console.log('The answer to life, the universe, and everything!');
// /j.stop();
});
}else{
Object.keys(routes).forEach(function(route) {
app.use("/" + route.toLowerCase(), routes[route])
});
app.set('port', process.env.PORT || 3001);
var server = app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + server.address().port);
});
console.log('Worker %d running!', cluster.worker.id);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment