대부분의 서버 측 스크립팅 언어는 exec 기능 (node, php, ruby 등)을 가지고 있습니다. 이렇게하면 프로그래밍 언어가 쉘과 상호 작용할 수 있습니다.백그라운드 프로세스, 로딩 막대
node.js에 exec()
을 사용하여 브라우저에서 AJAX 요청과 관련된 대규모 프로세스를 실행하고 싶습니다. 진행 상황을 사용자에게 표시하기위한 간단한 진행 /로드 막대를 원합니다.
exec
함수의 콜백/비동기 특성으로 인해이 예제를로드하는 데 5 초 이상 걸린다는 것을 아래 예제에서 발견했습니다.
내가 원하는 것은로드 표시 줄과 같은 실행 상태로 업데이트 할 브라우저의 내용 (아약스)을 얻는 방법입니다. 그러나 나는 run 파일이 브라우저에 의존하는 것을 원하지 않습니다.
아이디어가 있으십니까?
내 경로
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 당신은이에 대한 socket.io를 사용해야합니다
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 : 웹 소켓 구현이있는 모든 언어/플랫폼에서이 작업을 수행 할 수 있습니다. 어떤 일을하고, 방출하고, 행사하십시오. 더 많은 일을하고, 다른 사건을 제출하십시오 ... 각 합계에서 당신은 처리 상태를 전달할 수 있습니다. – davidbuzatto
답변을 추가 개발해 주셔서 감사합니다. 이것은 굉장합니다. express3과 socket.io를 포함한 repo에 감사드립니다. – ThomasReggi