我不确定这是我的服务器端问题还是 javascript/jQuery 问题...... 我的 shell 脚本执行这些操作(按顺序):
使用“GET”从用户处获取参数
用于更改服务器日期(使用
date -s
)、基于Linux的服务器和NTP的日期和时间等参数,用于NTP服务器配置重命名文件(使用
mv filename1 filename2
)将 NTP 信息存储在配置文件中
killall test.sh
运行
test.sh
客户端返回消息
现在我评论了4号和5号任务,但是效率还是太慢了。 我尝试过 javascript 和 jQuery : JavaScript 端:
var dthttp;
if (window.XMLHttpRequest) {
dthttp=new XMLHttpRequest();
}else{
dthttp=new ActiveXObject("Microsoft.XMLHTTP");
}
try{
dthttp.open("GET", 'test.ncgi', true);
dthttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
dthttp.onreadystatechange = onReceivData;
dthttp.send(some parameter);
}catch(e){
dthttp.abort();
}
function onReceivData(){
if(dthttp.readyState==4){
if(dthttp.status==200){
// do something if success
}
}
}
响应速度很快,但是不知道为什么不运行脚本…… 然而脚本中的文字是正确的......
所以我尝试了 jQuery:
\$.ajax({
url: "test.ncgi",
type: "GET",
async: false,
data: {
// some parameters
},
dataType: "json",
error: function(xhr){
// if error occured
},
success: function(data){
// if successfully
}
});
当我使用 jQuery 时,它确实会运行脚本,但它会阻止所有网页,因此在脚本返回响应之前您无法执行任何操作。
我更喜欢改变我的javascript端,因为效率很好,我只是不知道为什么脚本不运行......
任何想法表示赞赏!
更新:
感谢Manhattan先生的建议,jQuery可以运行并且不会阻塞网页。
但脚本响应效率依然不佳......
以及 shell 脚本:
if [ -f "_test.sh" ]; then
mv _test.sh test.sh
fi
echo -e "$NTP" > configfile
#killall test.sh &
#run test.sh &
varDATE=`date -s "$Date$Hour$Minute.$Second"`
sync
varDATE=`date`
cat << EOF
{
"MSG": "Server date/time is set as $varDATE"
}
EOF
最佳答案
好的,谢谢大家的帮助,我发现问题出在我的 shell 脚本上,
它处理事情的时间太长(test.sh和获取参数部分)。
我会检查该部分,希望它能解决问题。
关于javascript - 服务器端 Ajax 响应速度太慢(shell 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506684/