大多数服务器端脚本语言都具有exec函数(node,php,ruby等)。这允许编程语言与shell进行交互。后台进程,加载条
我希望在node.js中使用exec()
来运行大型进程,这是我在浏览器中用AJAX请求做的事情。我想要一个简单的进度/加载栏来向用户显示进度。
我在下面的例子中发现了一个难题,exec
函数的回调/异步特性将使这个例子花费5秒钟来加载。
我想要的是某种方式来获取浏览器的内容更新(ajax)与执行的当前状态,如加载栏。但我不希望ran文件依赖于浏览器。
有什么想法?
我的路线
exports.exec = function(req,res){
// http://nodejs.org/api.html#_child_processes
var sys = require('sys')
var exec = require('child_process').exec;
var child;
child = exec("node exec/test.js", function (error, stdout, stderr) {
var o = {
"error":error,
"stdout":stdout,
"stderr":stderr,
};
o = JSON.stringify(o);
res.send(o);
});
};
我test.js文件
var sys = require('sys');
var count = 0;
var interval = setInterval(
function(){
sys.print('hello'+count);
count++
if(count == 5){
clearInterval(interval);
}
},
1000);
谢谢我现在在演示中,深入socket.io文档。我很难相信没有人做到这一点。是否有可能使用其他语言? node.js和socket.io会最适合这个吗? – ThomasReggi
@ThomasReggi:你可以在每个有websocket实现的语言/平台上做到这一点。做一些工作,排放和事件。做更多的工作,提交另一个事件...在每次投诉中,您都可以传递处理状态。 – davidbuzatto
感谢您进一步开发您的答案。这太棒了。我很欣赏包括express3和socket.io的回购。 – ThomasReggi