2015-04-25 117 views
1

我正在創建http項目,我想知道什麼是非服務器文件的最佳方式?主服務器不會改變太多,而是寫入server.js文件中的所有代碼,我想將它的應用程序邏輯寫入其他文件中。我們每次更新這些文件時都不要重新啓動服務器,我們該怎麼辦?我正在考慮每5分鐘做一次interval刷新文件,但是有沒有更好的方法來做到這一點?在不重新啓動服務器的情況下運行新的/更新的應用程序文件

例(server.js):

var http = require('http'); 

// Load the initial app 
require('./app/main.js'); 

// Reload the app every 5 minutes 
setInterval(function(){ 
    delete require.cache[require.resolve('./app/main.js')]; 
    require('./app/main.js'); 
}, 300000); 

// Listen and handle requests 
var server = http.createServer(requestHandler); 
server.listen(8000); 

所以,這就是我如何重新加載無需重新啓動服務器應用程序的想法,但有沒有更好的辦法?

+0

通常情況下,你不能用新文件替換正在運行的模塊文件。通常有狀態,使用中的模塊句柄等等......我想可以寫入一個重新加載,但是無論如何,在重新加載期間你必須暫停服務器的活動,因爲它將處於部分初始化狀態,直到重新加載完成。如果所有這些定製開發實際上都值得避免偶爾的服務器重啓,我會感到非常驚訝。它確實會使開發複雜化。 – jfriend00

+0

如果您想要實現超高可用性,那麼通常的做法是使用負載均衡器和多個服務器進程。從負載平衡器中取出一個服務器進程,對其進行更新,重新啓動,將其重新放回負載平衡器中,然後執行另一個。 – jfriend00

回答

1

如果您正在討論重新開發,您應該查看nodemon。 https://github.com/remy/nodemon

+0

如果可能,我正在尋找開發和生產 –

+0

生產是一個完整的其他故事,取決於您使用哪種策略來發布新版本。通常我沒有看到人們使用重新啓動代碼,而是進行新的部署。 – Transcendence

+0

我們目前不使用節點,而且我們正在學習,因此我不確定「新部署」對節點的真正含義。我們目前使用PHP,其運行和工作方式有所不同。 –

相關問題