我想知道是否有可能创建一个JavaScript警报,提示用户以前的表单已提交,并且仍在处理中,或者后端脚本仍在运行。运行时进程通常需要2-5分钟。下面javascript alert如果进程仍在运行
<form id="form" method="POST">
<p id="survey">
<label for="list"><b>Run survey to check number of NGPOS deployed</b></label>
</p>
<p>
<label for="division">Please select division:</label>
<select type="list" id="list" name="division">
<option>--Select One--</option>
<option value="DENVER">Denver</option>
<option value="PHOENIX_SOUTHWEST">Phoenix-Southwest</option>
<option value="PORTLAND">Portland</option>
<option value="SOUTHERN_HOUSTON">Southern-Houston</option>
<option value="NORCAL">Norcal</option>
<option value="SEATTLE">Seattle</option>
<option value="VONS_SoCal">Vons-Socal</option>
<option value="EASTERN">Eastern</option>
</select>
</p>
<p id="survey">
<input type="submit" value="Run Survey" onclick="surveyFunction();"/>
</p>
</form>
摘录html代码的JavaScript函数在后端
function surveyFunction(){
var div = document.getElementById("list").value;
$.ajax({
type: "POST",
url: "possurv.pl",
data: 'division=' + encodeURIComponent(div),
});
}
反过来perl脚本执行一个shell脚本中调用一个Perl脚本,我加上了外壳脚本.sem文件禁止执行多个实例。但前端用户无法知道这一点。
摘录perl脚本的
$div = $FORM{division};
$expect = `./expect.sh $div`;
shell脚本摘录
sem="${log_path}/pos_survey.sem"
echo $0 "started."
if [ -e $sem ]
then
echo $0 "still running, exiting."
exit 1
else
touch $sem
fi
您对'如果[-e $ SEM]'的竞争条件。如果两个进程都看到该文件不在那里呢? –
@Kolyoly我很抱歉,我不明白这是怎么回事。你是否在说如果这个过程在同一个实例中被执行?在进程运行时只能有一个.sem文件,并且在shell脚本的末尾会删除这个.sem文件 – Dren
Reaaaaally希望你能够正确理智/检查你的输入,上帝禁止有人改变表单提交一个'; rm/-rf' ... –