背景
我使用PHP + SQL每60秒更新一次数据库(通过sql查询)。但是,要做到这一点,我是从浏览器中做到的,但是有一个问题:每次进入页面时,都会更新数据库。当我进入页面时也会发生这种情况,我只是刷新页面。 我不希望这样。
我正在寻找的是进入页面,就是这样,进入页面。我正在寻找方法来做到这一点,但我现在唯一能找到的东西(以及我问你的主要原因)是:
使用此代码使用Javascript刷新页面:
<script type='text/javascript'>
window.setTimeout(function(){ document.location.reload(true);
}, 60000);
</script>
通过HTML Meta。
不幸的是,同时执行这两个操作会将查询发送到数据库(当它不是那样的时候。预定的方法是每隔60秒执行一次。)
甚至可能我正在寻找什么?如果是这样,我需要做些什么才能使其正常工作?提前感谢您的回答。我希望我没有给你任何错误的信息。
编辑:
我忘了添加一些重要的东西。我正在寻找这个,因为理想的情况是要始终打开的页面,还有更多的事情要做(比如注册用户来命名)。
首先,我要感谢你所有的时间。由于我不理解AJAX代码(我还是新手),我做了一些研究。不知怎的,研究让我觉得我一直都错了。我想做的事情可以在服务器端完成,而不是在客户端。
所以,我所做的就是创建一个Even。
EVENT `updtable` ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE son SET time = time -1 WHERE time !=0;
就是这样。它完全符合我的要求。我想我只是搞砸了解释,或者我只是愚蠢到实现。我既感谢你的答案,也很抱歉浪费你的时间。
答案 0 :(得分:0)
你可以通过对你的php页面使用AJAX请求来实现它!
// Worker script for database update.
// Called every 60 seconds
(function worker() {
$.ajax({
type: "POST",
url: 'databaseupdate.php', //Put the file which updates the database
data: {tag: "check"}, // Send post variable to prevent direct access
success: function(data) {
// Put anything here which you want done after the db update is done
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 60000);
}
});
})();
嗯,在这种情况下,您不需要再次刷新整个页面。
此处出现问题:它将在手动页面刷新时更新数据库。
解决方案:
在您的php页面上,输入一个会话变量,该变量将记录最后一个条目的时间。然后简单地检查(Current Time) - (Last update Time) >=60
&amp;你很高兴。
希望这有帮助!
答案 1 :(得分:0)
我更喜欢在页面上发布内容,只有在设置了post变量的情况下,该页面才会重置数据库,但需要考虑 当你刷新页面时你不希望你的数据库重置,我建议使用Ajax帖子,而不是常规帖子,因为在常规帖子中 当您尝试刷新页面时,浏览器会要求再次发送帖子。
所以,我建议这样的事情:
<script src='path/to/jquery.js'></script>
<script>
window.setInterval(function() {
$.post('reset.php', {reset: 1}, function(e) {
if (e)
document.location.reload(true);
});
}, 6000);
</script>
和你的 reset.php :
<?php
if ($_POST['reset']) {
//Do whatever you do to reset your database
}
die(1);
?>