【问题标题】:Can you have a timer for SQL or PHP?你能有一个 SQL 或 PHP 的计时器吗?
【发布时间】:2021-04-20 12:42:45
【问题描述】:

所以我找到了选项,但它们不适合。我目前正在制作一个使用 SQL 服务器的 PHP 浏览器游戏。

我试图找出一种方法,当按下按钮时,300 秒后 SQL 单元应更新,并在 300 秒内将其显示在屏幕上。不必倒计时,即使还剩下什么。

找出一种方法来完成 300 秒并在刷新时显示它是我遇到的问题。

【问题讨论】:

标签: php html sql


【解决方案1】:

如果您可以避免用户关闭应用程序的浏览器选项卡时可能出现的潜在问题,那么您最好的选择是使用 JavaScript sn-p 来执行此操作:

  1. 当用户点击按钮时,会出现这样的 JavaScript 超时

    // 1. prepare timeout
    setTimeout(on_timeout_fn, 300000);
    

    这段代码的作用是,300秒后,它会调用on_timeout_fn函数。

  2. 时间到了,您的函数on_timeout_fn 将执行。您应该将其定义为:

    let on_timeout_fn = function() {
        // 2. run an ajax call to execute a PHP script that will update the database
        // if you're using something like JQuery, it should be as easy as:
        $.post("update_db.php", "data_to_send", function() {
            // 3. when ajax call ends, make sure the button dissapears
            $("#yourButtonID").toggle();
        }, "text");
    }
    

【讨论】:

    【解决方案2】:

    您必须使用 JavaScript 和 PHP 来执行此操作。您也可以使用 JQuery 来执行此功能。在 Javascript 中,您可以通过其查询选择器获取按钮,无论是类还是 id 通过单击,然后您可以设置一个计时器,使其在 300 秒之前不会执行代码,然后运行代码发送值通过 AJAX 到后端,获取您喜欢的任何内容。然后继续使用PHP和MYSQL更新数据。

    【讨论】:

      【解决方案3】:

      不,它实际上并不存在,不在“标准”代码中。不过,您可以通过其他方式接近它:

      单击更新数据库时,将 timerReady 设置为 NOW()+300sec。

      在刷新/重新加载/cron/无论您检查timerReady < NOW() 时,您都知道 300 秒已经过去。否则,timerReady - NOW() 是剩余秒数。

      当您按下按钮时,您让 javascript 等待 300 秒(我建议使用计时器/指示器)然后重新加载。同时当用户重新加载时,您可以使用timerReady - NOW() 技巧来决定用户必须等待多长时间。

      您只能使用 Javascript 来执行此操作,但如果您不将其存储在数据库中,则当用户刷新时,他们必须重新开始,因为您无法验证任何内容。

      【讨论】:

        猜你喜欢
        • 2015-10-21
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-07
        • 2011-01-11
        • 2015-01-06
        • 1970-01-01
        相关资源
        最近更新 更多