Self每隔一段时间刷新一次数据库

时间:2014-03-11 06:30:09

标签: javascript php html sql

背景

我使用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;

就是这样。它完全符合我的要求。我想我只是搞砸了解释,或者我只是愚蠢到实现。我既感谢你的答案,也很抱歉浪费你的时间。

2 个答案:

答案 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);
?>