[英]Continues SQL queries on PHP
我有一个PHP脚本,该脚本需要一个Instance-ID
(int)数组,并对每个Instance-ID
执行SQL查询,并将结果写入表中。
我想每隔X秒刷新一次数据库中的数据(或使用每个新数据),但是我找不到一种方法。
function checkStatus()
{
global $instances_ID;
// Create connection
$con=mysqli_connect("*******","*****","*****","****");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//Clear page
echo "<script type='text/javascript'>\n";
echo "document.body.innerHTML = ''";
echo "</script>";
echo "<h3><center>Last Backups:</center></h3><br><br>";
//Build table
echo "<table border='1'align='center'>
<tr>
<th>Instance ID</th>
<th>Backup ID</th>
<th>STATUS</th>
<th>Start Time</th>
<th>End Time</th>
<th>Progress</th>
<th>Servlet</th>
</tr>";
foreach ($instances_ID as $id)
{
$result = mysqli_query($con,"SELECT * FROM `instance_backups` WHERE INSTANCE_ID='".$id."' ORDER BY `instance_backups`.`START_TIMESTAMP` DESC LIMIT 1");
$row = mysqli_fetch_array($result);
echo "<tr>";
echo "<td align='center'>" . $row['INSTANCE_ID'] . "</td>";
echo "<td align='center'>" . $row['INSTANCE_BACKUP_ID'] . "</td>";
echo "<td align='center'>" . $row['STATUS'] . "</td>";
echo "<td align='center'>" . $row['START_TIMESTAMP'] . "</td>";
echo "<td align='center'>" . $row['END_TIMESTAMP'] . "</td>";
echo "<td align='center'>" . $row['PROGRESS_PERCENTAGE'] . "</td>";
echo "<td><input type=button onClick=location.href='******' value='Immidiate Backup'>";
echo "</tr>";
}
echo "</table>";
//Close the connection
mysqli_close($con);
}
首先,您需要一个JavaScript库。 我强烈建议使用jQuery。 下载最新版本,然后将其上传到您的服务器,最好将其上传到单独的文件夹,例如“ jscripts”或类似内容。
现在研究setInterval()。 使用一个小型且快速的功能来显示其实用性。 setInterval(函数名称,x)-每x毫秒调用一次函数。 如果您这样做:
function addText(){
document.getElementById('testDiv').innerHTML = " HELLO ";
}
setInterval( addText, 1000 );
您会看到,如果您有一个id为“ testDiv”的div,那么每隔1秒钟它就会向div中添加“ HELLO”,并不断地填充它。
现在,您研究“ jquery ajax”。 这涉及更多,由于这个问题涉及许多步骤,因此我将不做详细介绍,但是,AJAX基本上是与另一个脚本建立后台连接,并且可以从中获取输出,而无需刷新页面。 一旦将三个链接在一起,您就会大笑...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.