所以,我有这个脚本每5秒刷一次我的Div。在前几分钟左右,脚本工作得很好但是在5-10分钟之后它不再刷新div或者Div需要很长时间才能刷新。我对javascript一无所知,所以有人可以告诉我问题是什么。该脚本用于刷新我的聊天室。这是代码:
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#puu').load('<?php echo $kakka; ?>', function(){
setTimeout(refreshTable, 5000);
});
}
</script>
只是确定这是整个代码:
<?php
include '../dbcKIRJAUTUNUT.php';
page_protect();
error_reporting(0);
ini_set('display_errors', 0);
?>
<?php
$rs = mysql_query("SELECT * FROM users WHERE id='$_SESSION[user_id]'");
while
($row= mysql_fetch_array($rs))
{$starter= $row['id'];
$user_name= $row['user_name'];}
$starterID=$starter;
$companyID=$_GET['id'];
$input = $_POST['viesti'];
date_default_timezone_set('Europe/Helsinki');
$timestamp = date('h:i', time());
$file = $companyID."and".$starterID.".txt";
if (file_exists($file)) {
$kakka = $companyID."and".$starterID.".txt";
} else {
$kakka = $starterID."and".$companyID.".txt";
}
$current = file_get_contents($kakka);
if(isset($_POST['viesti']) && $_POST['viesti'] != null){
$shipuli= "<b>$user_name</b> <br> $input $timestamp\n<br>";
file_put_contents($kakka, $shipuli, FILE_APPEND | LOCK_EX);
}
echo '<div id="puu">'.$current.$shipuli.'</div>';
?>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#puu').load('<?php echo $kakka; ?>', function(){
setTimeout(refreshTable, 5000);
});
}
</script>
<style>
#puu{
width: 300px;
height: 450px;
overflow: scroll;
}
</style>
</head>
<body>
<form method="post" id="norefesh">
<input type="text" name="viesti" autocomplete="off">
<input type="submit">
</form>
<form method="post">
<input type="submit" name="refresh" value="Päivitä">
</form>
</body>
</html>
答案 0 :(得分:0)
我认为您需要为setInterval更改函数setTimeout。
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#puu').load('<?php echo $kakka; ?>', function(){
setInterval(function(){
}, 5000);
});
}
答案 1 :(得分:0)
当你确认它工作2-3分钟然后它的延迟似乎是内存泄漏。与刷新页面时相比,检查浏览器在5分钟后是否消耗了太多内存。另请参阅jQuery load() method memory leak?
根据链接中的建议,在$.ajaxSetup({ cache: false });
调用之前尝试.load()
。