Question

Je cherche à optimiser / mettre à jour notre application web à partir de PHP / MySQL traditionnel, à une technologie plus efficace. J'ai fait des recherches sur Node.js, Socket.IO et CouchDB, qui semblent prometteuses, mais je cherche des recommandations et une aide dans le choix des meilleures technologies pour ce que nous voulons.

Alors, pour décrire la ce qui est actuellement fait ...

Nous avons des dispositifs que les données de capture et il envoie à un serveur FTP (via un fichier .txt). Un script PHP passe toutes les 5 minutes, le balayage du FTP pour les fichiers txt que les appareils envoient. Le contenu des fichiers sont insérés dans une base de données MySQL, et le fichier txt supprimé. Un autre script PHP qui circule toutes les 15 minutes centralisera les données de la base de données (par exemple, les valeurs de somme pour la dernière heure) et produire un document XML, qui sont lus par des cadrans Flash.

De toute évidence, il y a beaucoup de problèmes ici, et il est loin d'être une solution en temps réel, ce qui est ce que nous visons. La solution que nous aimerions est que d'une certaine manière, il pourrait détecter le fichier txt est téléchargé sur le FTP, et ne traiter que les données puis (plutôt que d'avoir un intervalle de jeu qui fonctionne). Les données devrait encore être ajouté à la base de données, et être lu par la fin de l'avant dès qu'il est ajouté à la base de données. Flash serait entièrement supprimé, comme un peu ... beurk ...

Avec de nouvelles technologies intéressantes comme Node.js et Web Sockets (socket.io), je suis sûr que nous pourrions améliorer grandement ce processus! Je suis au courant d'Ajax être capable de faire quelque chose comme ça, mais l'entendre a des frais généraux relativement élevés par rapport à Sockets Web. Je suis aussi un peu brumeux avec la façon dont une base de données travaillerait avec Node.js, sans parler de la meilleure option pour ce que nous sommes après ...

Merci!

Était-ce utile?

La solution

Node works well with NoSQL, (especially JSON based NoSQL) but since their are modules for handling most databases in node that are async and return javascript objects I wouldn't dismiss using MySQL if you're more comfortable using it.

here's an database agnostic outline.

var fs = require('fs');  //to watch the FTP
var db = require('db');  //your choice of db
var express = require('express'); //http server
var io = require('socket.io'); //for realtime data push
var app = express.createServer(); //create http server
/*...usual express implementation...*/
app.listen(80);
var socket = io.listen(app); 
db.connect( ..., start );
function checkForFiles () {
  fs.readdir( FTPpath, sendFilesToDB );
};
function sendFilesToDB ( err, files ) {
  if( files.length === 0 ) {
    return checkForFiles();
  }
  db.insert( fileToQuery( files.pop() ), function () {
    sendFilesToDB( err, files );
  });
}
function fileToQuery ( file ) {
  ...
  return query;
}
function start () {
  checkForFiles();
  setTimeout( checkData, 1000 );
}
function checkData () {
  db.query( '....', function ( err, data ) {
    socket.broadcast( processData( data ) );
    setTimeout( checkData, 1000 );
  }
}
function processData (data) {
  ...
  return data;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top