我希望优化/升级我们的Web应用程序从传统的PHP/MySQL,更高效的技术。我一直在研究Node.js,socket.io和Couchdb,它们看起来很有希望,但是正在寻找建议和一些帮助,以选择我们想要的最佳技术。

因此,要概述当前所做的工作...

我们有捕获数据并将其发送到FTP服务器(通过.txt文件)的设备。 PHP脚本每5分钟运行一次,将FTP扫描为设备发送的.TXT文件。文件的内容插入到mySQL数据库中,并删除.txt文件。每15分钟运行一次的另一个PHP脚本将从数据库中整理数据(例如,最后一个小时的总和值)并产生XML文档,该文档通过闪存拨号读取。

显然,这里有很多问题,这远非实时解决方案,这是我们的目标。我们想要的解决方案是,它可以以某种方式检测到TXT文件何时将其上传到FTP,而仅处理数据(而不是具有运行的设置间隔)。数据仍然需要添加到数据库中,并在将其添加到数据库后立即通过前端读取。闪光灯将被完全删除,因为它有点...

借助Node.js和Web插座(socket.io)等令人兴奋的新技术,我敢肯定我们可以大大改进此过程!我知道Ajax能够做类似的事情,但是听到与Web插座相比,它的开销相当高。我对数据库如何与node.js一起使用,更不用说我们追求的最佳选择了...

谢谢!

有帮助吗?

解决方案

Node与NOSQL(尤其是基于JSON的NOSQL)配合使用,但是由于它们是用于处理异型和返回JavaScript对象的大多数数据库的模块,因此,如果您更舒适地使用它,我不会使用MySQL解雇。

这是数据库不可知论概述。

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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top