2014-11-06 32 views
1

我想設置永遠監視器。當我從它記錄「app.js已經經過3點開始退出」,但它仍然運行在命令行啓動我的應用程序不過哪裏放置永久監視器代碼?

var forever = require('forever-monitor'); 

var child = new(forever.Monitor)('app.js', { 
    max: 3, 
    silent: true, 
    options: [] 
}); 

child.on('exit', function() { 
    console.log('app.js has exited after 3 restarts'); 
}); 

child.start(); 

我說這個我app.js。這個代碼應放在哪個文件中?我是否錯過了永久監視器的使用方法?

回答

5

下面是永遠顯示器的工作原理

app_fm.js

var forever = require('forever-monitor'); 

var child = new(forever.Monitor)('app.js', { 
    max: 3, 
    silent: true, 
    options: [] 
}); 

child.on('exit', function() { 
    console.log('app.js has exited after 3 restarts'); 
}); 

child.start(); 


app.js

// put in all your great nodejs app code 
console.log('node app is now running'); 


從CLI 現在,通過鍵入以下命令啓動您的應用程序
節點app_fm

+0

如果我想的是,腳本啓動本身「永遠」,我應該只是增加最多的數量到999999或有作爲永遠紀念這一個標誌? – sanyooh 2014-11-07 09:22:20

+3

永久監視通常不是一個好主意,無限期地重新啓動您的應用程序。大多數時候你的應用程序崩潰了,這將是由於代碼中的錯誤,如果你重新啓動,它會再次崩潰。重複這9999999次將會令人沮喪。我使用永久監視器進行開發,即每次代碼庫更改時重新啓動應用程序,而不是用於生產。如果您想要解決方案在生產環境中重新啓動您的應用程序,您應該使用新貴。這裏是我寫的一個教程來完成這個任務http://handyjs.org/article/the-kick-ass-guide-to-deploying-nodejs-web-apps-in-production – takinola 2014-11-07 19:25:32

0

老實說,我只是使用forever而不是兩個都與forever-monitor(儘管我知道它在永遠的文檔中談論它)。我創建了一個名爲start.js的文件,並使用node start.js運行我的應用程序。

'use strict'; 
var forever = require('forever'); 
var child = new (forever.Monitor)('app.js', { 
    //options : options 
}); 

//These events not required, but I like to hear about it. 
child.on("exit", function() { 
    console.log('app.js has exited!'); 
}); 
child.on("restart", function() { 
    console.log('app.js has restarted.'); 
}); 
child.on('watch:restart', function(info) { 
    console.error('Restarting script because ' + info.file + ' changed'); 
}); 

//These lines actually kicks things off 
child.start(); 
forever.startServer(child); 

//You can catch other signals too 
process.on('SIGINT', function() { 
    console.log("\nGracefully shutting down \'node forever\' from SIGINT (Ctrl-C)"); 
    // some other closing procedures go here 
    process.exit(); 
}); 

process.on('exit', function() { 
    console.log('About to exit \'node forever\' process.'); 
}); 

//Sometimes it helps... 
process.on('uncaughtException', function(err) { 
    console.log('Caught exception in \'node forever\': ' + err); 
});