ほとんどのサーバー側スクリプト言語には exec 関数 ( node、php、ruby など) があります。これにより、プログラミング言語がシェルと対話できるようになります。
exec()
node.js で使用して、ブラウザで AJAX リクエストを処理していた大規模なプロセスを実行したいと考えています。ユーザーに進行状況を表示するための単純な進行状況/読み込みバーが必要です。
exec
以下の例では、関数のコールバック/非同期の性質により、この例の読み込みに 5 秒以上かかることがわかりました。
私が欲しいのは、ロードバーのような実行の現在の状態でブラウザのコンテンツを更新(ajax)する方法です。しかし、実行されたファイルがブラウザに依存することは望ましくありません。
何か案が?
私のルート
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);