如何使php中的多重计时器即使页面刷新也不会重置

How to make a multiple timer not to reset in php even if the page refreshes?

本文关键字:刷新 php 何使 计时器      更新时间:2023-09-26

我已经从这里检查了答案,那么我如何为多个数据创建它。例如,为了让我为特定服务设置计时器。这是我的剧本。

            <script type="text/javascript">
            //var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);
            function addMinutes(date, minutes) {
                return new Date(date.getTime() + minutes*60000);
            }
            var dat = new Date();
            //var tim = addMinutes(dat, 15);
            //console.log(tim); 
            function fixIntegers(integer)
            {
                if (integer < 0)
                    integer = 0;
                if (integer < 10)
                    return "0" + integer;
                return "" + integer;
            }
            $(function () { 
                $('.btn-start-timer').click(function(){
                    var i = window.setInterval(function(){
                        var future = addMinutes(dat, 60);
                        //var future = new Date("Dec 12 2013 22:10:00 GMT-0800 (Pacific Standard Time) ");
                        var now = new Date();
                        //console.log(tim);
                        var difference = Math.floor((future.getTime() - now.getTime()) / 1000);
                        var seconds = fixIntegers(difference % 60);
                        difference = Math.floor(difference / 60);
                        var minutes = fixIntegers(difference % 60);
                        difference = Math.floor(difference / 60);
                        var hours = fixIntegers(difference % 24);
                        difference = Math.floor(difference / 24);
                        var days = difference;
                    /*  $(this).parent().parent().find('.timer #seconds').text(seconds + "s");
                        $(this).parent().parent().find('.timer #minutes').text(minutes + "m");
                        $(this).parent().parent().find('.timer #hours').text(hours + "h");
                        $(this).parent().parent().find('.timer #days').text(days + "d");*/
                        $(".timer #seconds").text(seconds + "s");
                        $(".timer #minutes").text(minutes + "m");
                        $(".timer #hours").text(hours + "h");
                        $(".timer #days").text(days + "d");
                        if(hours == 0 && minutes == 0 && seconds == 0){
                             window.clearInterval( i );   
                            alert('times up');
                        }
                    }, 1000);
                });
            });
        </script>

这是我的html:

        <table cellpadding="10">
            <tr>
                <th>Timer</th>
                <th>&nbsp;</th>
            </tr>
            <tr>
                <td class="timer">
                    <span id="days"></span>
                    <span id="hours"></span>
                    <span id="minutes"></span>
                    <span id="seconds"></span>
                </td>
                <td><button type="button" class="btn-start-timer">Start Now</button></td>
            </tr>
            <tr>
                <td class="timer">
                    <span id="days"></span>
                    <span id="hours"></span>
                    <span id="minutes"></span>
                    <span id="seconds"></span>
                </td>
                <td><button type="button" class="btn-start-timer">Start Now</button></td>
            </tr>
        </table>

一旦启动,我如何使时间不重置?

在$_SESSION或$_COOKIE['time']或localStorage中保存小时、分钟、秒然后从中检索值。

使用事件:

加载之前

检测用户何时离开页面。然后,发送一个ajax请求。为了处理您的请求,您只需将任何信息保存在posted.php.中的$_SESSION变量中即可

// posted.php
session_start();
if ( isset ( $_POST['hours'] && isset ( $_POST['minutes'] && isset ( $_POST['seconds'] && )
{
    $_SESSION['hours'] = $_POST['hours'];
    $_SESSION['minutes'] = $_POST['minutes'];
    $_SESSION['seconds'] = $_POST['seconds'];
}

然后,当您的新页面加载/刷新时,您应该在javascript中包含已初始化的变量。

var hours = <?php if ( isset($_SESSION['hours']) ) echo $_SESSION['hours'] else 0; ?>;
var minutes = <?php if ( isset($_SESSION['minutes']) ) echo $_SESSION['minutes'] else 0; ?>;
var seconds = <?php if ( isset($_SESSION['seconds ']) ) echo $_SESSION['seconds '] else 0; ?>;

现在明白了,这是一个黑暗的镜头,因为我不知道你的应用程序是如何构建的。如果你正在使用某种框架,这可能没有那么容易,但如果你正在编程一些小的或过程性的东西,那么这将符合你的需求。

编辑:我知道你有多个定时器,而不是使用

$_SESSION['hours']

使用

$_SESSION['idOfTimer']['hours']

每个定时器都有自己的定时器。