2016-03-17 47 views
0

我想運行一個服務器來在數據庫中創建一些條目。我以前沒有這樣做過。我使用node.js,表示服務器和mysql與node-mysql,並將其作爲低價webhosting服務在Uberspace上託管。當即時通訊啓動服務器'nohup node app.js &'似乎一切正常,但一段時間後,我沒有得到任何響應從服務器在webbrowser了。我認爲服務器只是掛斷了,我想自動重新啓動它。這裏我app.js的簡單代碼:節點js express服務器使用mysql掛斷,如何自動重啓?

var express = require('express'); 
var app = express(); 
var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host : '***', 
    database: '***', 
    user : '***', 
    password: '***', 
    port: 3306 
}); 
connection.connect(function(err) { 
    console.log(err); 
}); 


app.get('/test', function(req,res) { 
    var post = {ID: 1, User: "testuser"}; 
    var query = connection.query('INSERT INTO testtabelle123 SET ?', post, function(err, results){ 
     console.log(err); 
    }); 
    console.log(query.sql); 
    res.send(query.sql); 
}); 

我想我乾脆只需要稍作改動在代碼中自動重新啓動,可能使用某種形式的中間件/工具。你能告訴我該怎麼做嗎?到目前爲止,還沒有找到簡單的解決方案。

+1

可能不是你在尋找什麼,但我會建議尋找到永遠的模塊。 https://www.npmjs.com/package/forever。它將確保您的節點腳本在失敗的情況下自動重新啓動。 – user2263572

回答

1

問題發生是因爲當沒有連接時(在某個時間之後),mysql正在關閉連接。收藏此建立的連接永遠活着:

setInterval(function() { 
    connection.query('SELECT 1', [], function() {}) 
}, 5000) 

相關的問題:https://github.com/felixge/node-mysql/issues/1337

+0

好趕上!出於好奇,會使用連接池在這裏有什麼區別? – Connor

+0

Connor,我沒有測試連接池,這種方法對我來說工作得很好。 – Ozgur

+1

現在這個解決方案現在運行了30個小時沒有任何掛斷了,我選擇答案是正確的。謝謝! – MojioMS

相關問題