簡體   English   中英

倒數計時器r在零時從24小時開始計時

[英]Countdown timer rstarts from 24hrs when it reaches zero

我開發了基於計算機的測試系統,學生可以在其中使用倒數計時器測試他們的知識。 我使用了以下與服務器相關的代碼。

first_page.php

<?php
    session_start();
    $get_time="select * from tests";
    $run_time = mysqli_query($con, $get_time);
    $row_time=mysqli_fetch_array($run_time);
    $duration=$row_time['duration'];

    $_SESSION["duration"]=$duration;
    $_SESSION["start_time"]=date("Y-m-d H:i:s");
    $end_time=date('Y-m-d H:i:s', strtotime('+'.$_SESSION['duration'].'minutes', strtotime($_SESSION['start_time'])));
    $_SESSION['end_time']=$end_time
?>

<script type="text/javascript">
    window.location="second_page.php";
</script>

second_page.php

<div id="response"></div>

<script type="text/javascript">
    setInterval(function(){
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","response.php",false);
        xmlhttp.send(null);
        document.getElementById("response").innerHTML=xmlhttp.responseText;
     },1000);
</script>

response.php

session_start();
$from_time1=date('Y-m-d H:i:s');
$to_time1=$_SESSION['end_time'];

$timefirst=strtotime($from_time1);
$timesecond=strtotime($to_time1);
$differenceinseconds=$timesecond-$timefirst;
echo gmdate("H:i:s",$differenceinseconds);

現在的問題是,當計時器歸零時,它將達到24小時並開始遞減計數。 有沒有一種方法可以修改這些代碼,以便在計時器歸零時將其停止並將用戶重定向到另一個頁面,在該頁面上我可以說“您已經用完時間並且答案已自動提交”?

您可以在響應回調中進行檢查,如下所示:

if (xmlhttp !== '0 minutes') {
    document.getElementById("response").innerHTML=xmlhttp.responseText;
} else {
    window.location = 'put your url here';
}

在查看您的代碼時,我看到您每1秒鍾執行一次請求。 這確實是很糟糕的做法,多個客戶端的服務器負載將是巨大的。 不能用PHP返回日期並使用JavaScript倒數計時嗎? 並每5分鍾重新檢查javascript是否仍與php中的日期同步? 從(60 * 60 * 24)請求開始,每天每位客戶轉到(20 * 24)請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM