下面是我编写的代码,用于通过发送AJAX请求在UNIX中执行名为mqValidation.sh的脚本。这会生成一个新的子进程,当子进程退出时,它会发送一个文本文件响应,该响应显然包含脚本的输出。但是,我在这里遇到的问题是,由于脚本需要很长时间才能完成,因此在第一个子进程退出之前会生成一个新的子进程,这意味着该脚本将再次执行。
var express = require('express');
var app = express();
var cp = require('child_process');
app.post('/triggerMQ', function(req,res){
ls = cp.spawn('./mqValidation.sh',req.body.envs,{cwd:"./MQValidation"});
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('exit', (code) => {
console.log("Child process exited");
res.sendFile(__dirname+'/MQValidation/html.txt');
});
});
app.listen(8000, function(){
console.log("app listening at port 8000.....");
});
请帮助!!
答案 0 :(得分:0)
增加服务器端的超时解决了这个问题。看起来在120秒后,浏览器正在发送另一个再次触发脚本的请求。