如何通过正确切换在最长执行时间结束时给出用户定义的超时消息
How to give user defined timeout message when max execution time over by handeling properly
我正在设计自定义查询页面,用户可以在其中激发查询并获得所需结果。在我的数据库中,我有数以百万计的记录,显然执行大约需要10到15分钟的时间。超时页面终止后,php脚本下面的代码不会执行,所以它不会显示在设计和页脚下面。
请让我知道如何正确处理超时,以便整个页面执行并给出正确的用户定义的超时消息,如果执行时间超过,还可以在设计和页脚下面。
以下是我要做的…
<form onsubmit="custom.php;" id="usrform" method="post">
<textarea id="tarea" placeholder=" Example: select malindex,malname,virustype,filetype,count from CT_DETECTIONS;" name="query" form="usrform" style="width:800px;height:100px;"></textarea>
<br>
<br><input type="submit" value="Submit Query" onclick="validate();">
</form>
<br>
<?php
//DB connection
if(isset($_POST['query'])&& $_POST['query']!='')
{
$x = $_POST['query'];
$result = mysqli_query($con,$x);
if(!$result)
{
$msg='<b>Error: </b>Invalid query. Enter a valid query. Please refer to Database Schema <a href="tableinfo.html"><b style="color:black;">here</b> </a>';
}
else
{
$x="<b>Query: </b>" .$_POST['query'];
//fetching rows and drawing google chart table
<?php echo $x;
}
}?>
<div id="valid" style="color:red;">
<?php echo $msg; ?>
</div>
<div style="color:red">
<lable id="myP"> </lable>
</div>
</div>
</div>
<div id="visualization" style="width:800px; height: 450px;color:black;margin-left:22px;"></div>
</div>
</div>
请让我知道如何处理由于超时而导致的页面终止
您可以使用set_time_limit(60*60)更改时间限制;www.php.net,它将把它设置为1h,或者看看这篇关于Stackoverflow的文章。
您可以从以下脚本中检查最大执行时间值:
if(ini_get('max_execution_time')</*Set value do you want(integer)*/{
//Overlimit
}
else{
//Your script
}
使用AJAX:
<?php
//DB connection
if(isset($_POST['query']))
{
// MUST BE FIRST OUTPUT (nothing before)
header('Content-type: text;charset=UTF-8');
$x = $_POST['query'];
$result = mysqli_query($con,mysqli_real_escape_string($con, $x));
if (!$result)
{
echo '<b>Error: </b>Invalid query. Enter a valid query. Please refer to Database Schema <a href="tableinfo.html"><b style="color:black;">here</b> </a>';
exit();
}
//fetching rows and drawing google chart table
echo $x;
exit();
}
?>
<form onsubmit="return submitUsrForm();" id="usrform" method="post">
<textarea id="tarea" placeholder=" Example: select malindex,malname,virustype,filetype,count from CT_DETECTIONS;" name="query" form="usrform" style="width:800px;height:100px;"></textarea>
<br>
<br><input type="submit" value="Submit Query" onclick="validate();">
</form>
<br>
<b>Query: </b><span id="query"></span>
<div id="valid" style="color:red;">
</div>
<div style="color:red">
<lable id="myP"> </lable>
</div>
</div>
</div>
<div id="visualization" style="width:800px; height: 450px;color:black;margin-left:22px;"></div>
</div>
</div>
<script type="text/javascript">
function validate() { return true; }
function submitUsrForm() {
// clear content between each query
document.getElementById("valid").innerHTML = "";
document.getElementById("visualization").innerHTML = "";
// get textarea content
var query = document.getElementById("tarea").value;
// Create AJAX request
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("POST", "custom.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("query=" + encodeURI(query));
xhr.onreadystatechange=function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
// success
document.getElementById("visualization").innerHTML = xhr.responseText;
}
else {
// error
document.getElementById("valid").innerHTML = xhr.responseText;
}
}
}
return false;
}
</script>
要测试执行超时,可以在header
:之后添加
ini_set('max_execution_time',1 );
sleep(3);
相关文章:
- 使用具有用户定义字段的新请求者创建新的Zendesk票证
- jquery返回ajax响应和用户定义的变量到函数
- 如何使用用户定义的值来增加Javascript中的值
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 用户定义的函数在 Angular Cordova 中不起作用
- 如何在asp.net中的用户定义的数据网格中使列可编辑
- 如何使用用户定义的相等函数在Javascript中创建一组用户定义的对象
- 谷歌标记不显示用户定义的点
- 在HTML中创建用户定义的表
- 如何将用户定义的键和值添加到数组中
- 反应.js组件:用户定义的属性.我做得对吗
- 为用户定义的热点选择平台/语言
- 哪些免费的 JavaScript IDE 支持用户定义变量的自动完成,以及“跳转到定义”
- 如何查找函数是内置函数还是用户定义的函数
- 如何在 angular 的控制器中使用用户定义的类实例/对象
- 我想使用 JavaScript 从用户定义特殊字符更改字符串
- 在 Express 服务器上上载期间使用用户定义的名称重命名文件
- 如何在 JavaScript 中调用窗口对象的用户定义函数
- 在指令中,处理对用户定义的方法名称的调用
- 如何将JMeter的用户定义变量传递给Javascript