我有一个网站从MySQL数据库(使用PHP)获取数据,并为每一行动态创建div以显示数据。显示数据的网页部分每隔几秒刷新一次(通过删除所有div,再次转到数据库并重新创建它们)。在第一次加载页面时,从数据库检索的数据是正确的,但是,如果之后对数据进行了更改,则在显示部分重新加载时,此更改不会反映在页面上。如果手动刷新整个页面,则检索的数据是正确的。
我已将问题的根源缩小到处理数据库连接和数据选择的php代码,并尝试清除浏览器缓存。有问题的代码如下:
<?php
function disableCache(){
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
function reloadQueue(){
$dsn = 'mysql:host=db4free.net;dbname=myDB';
$user = 'username';
$password = 'password';
$conn = new PDO($dsn, $user, $password);
$sql = 'SELECT SQL_NO_CACHE msgId, msg, msgTime, status FROM MsgTable';
foreach($conn->query($sql) as $row){
$msgId = $row["msgId"];
$msg = $row["msg"];
$time = $row["msgTime"];
$status = $row["status"];
echo 'addToQueue("' . $msgId . '","' . $msg . '","' . $time . '","' . $status . '"); ';
}
$conn = null; //close connection
}
?>
这是调用php函数的脚本:
<script>
function onLoad(){
<?php disableCache() ?>
<?php reloadQueue() ?>
//reload every 15 seconds
setInterval(function(){
$("#queue").empty();
<?php reloadQueue() ?>
}, 15000);
}
</script>