2016-03-17 1 views
0

Je souhaite qu'un serveur s'exécute pour créer des entrées dans une base de données. Je n'ai pas fait ça avant. J'utilise node.js, exprime pour le serveur et mysql avec node-mysql et l'héberge sur uberspace comme un service d'hébergement à bas prix. Lorsque je démarre le serveur avec 'nohup node app.js &' tout semble fonctionner correctement, mais après un certain temps, je ne reçois plus aucune réponse du serveur dans un webbrowser. Je pense que le serveur raccroche et je veux le redémarrer automatiquement. Voici le code simple pour mes app.js:nœud js serveur express utilisant mysql raccroche, comment redémarrer automatiquement?

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); 
}); 

Je suppose que je simplement ai juste pour faire un peu de changement pour redémarrer automatiquement le code et peut-être utiliser une sorte de middleware/outil pour cela. Pouvez-vous me dire quoi faire? Havent a trouvé des solutions simples sur SO jusqu'ici.

+1

ne peut être exactement ce que vous cherchez, mais je suggère à la recherche dans le module pour toujours. https://www.npmjs.com/package/forever. Cela garantira que votre script de noeud est automatiquement redémarré en cas d'échec. – user2263572

Répondre

1

Un problème se produit car mysql ferme la connexion lorsqu'il n'y a pas de connexion (après un certain temps). Ajoutez ceci à établir une connexion en vie pour toujours:

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

question pertinente: https://github.com/felixge/node-mysql/issues/1337

+0

Bonne prise! Par curiosité, utiliser un pool de connexion ferait-il une différence ici? – Connor

+0

Connor, je n'ai pas testé le pool de connexion et cette approche fonctionne bien pour moi. – Ozgur

+1

après avoir fait tourner cette solution maintenant pendant 30 heures sans plus jamais raccrocher, je sélectionne la réponse comme étant correcte. THX! – MojioMS