Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erklärung, wie man die Echtzeit-Countdown-Funktion in PHP implementiert
In diesem Artikel wird hauptsächlich die Implementierungsmethode der PHP-Echtzeit-Countdown-Funktion vorgestellt und die spezifischen Schritte und zugehörigen Betriebsfähigkeiten von PHP in Kombination mit der Zeitstempeloperation von Front-End-JS analysiert, um die Countdown-Funktion anhand spezifischer Beispiele zu implementieren Bedürftige können sich darauf beziehen
Das Beispiel in diesem Artikel beschreibt, wie die Echtzeit-Countdown-Funktion in PHP implementiert wird. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
In den letzten Tagen wird das Unternehmen eine zeitlich begrenzte Einkaufsfunktion anbieten. Dies erfordert einen Countdown und einen Echtzeit-Countdown.
Anforderungen:
1) Ein Echtzeit-Countdown von Stunden, Minuten und Sekunden muss angezeigt werden
2) Das Ändern von Datum und Uhrzeit auf der Clientseite wird durchgeführt hat keinen Einfluss auf die normale Anzeige des Countdowns (d. h. basierend auf der Serverzeit)
Tatsächlich gelten hierfür die gleichen Anforderungen wie für die Zeitbegrenzungsfunktion vieler Prüfungs- und anderer Systeme
Lösungsideen:
1) Sie können Ajax nicht immer jedes Mal verwenden. Erhalten Sie jede Sekunde die Serverzeit.
Der Echtzeit-Countdown muss also mit Javascript implementiert werden . Das ist sehr einfach. Es gibt viele Beispiele im Internet.
2) Das Problem besteht nun darin, das Problem der Änderung des Datums und der Uhrzeit auf unserer Anzeige zu lösen.
Die Lösung besteht darin, den Zeitunterschied zwischen der Clientzeit und der Serverzeit zu berechnen. Auf diese Weise ist das Problem gelöst.
Auf diese Weise müssen Sie PHP nur einmal ausführen Zeit ist die gleiche wie Die Zeit des Servers ist synchronisiert. Theoretisch ist sie synchronisiert, aber beim tatsächlichen Test tritt ein Fehler von 1 Sekunde auf (der spezifische Grund hängt mit der Netzwerkgeschwindigkeit zusammen. Je schneller die Netzwerkgeschwindigkeit, desto kleiner ist der Fehler), aber das ist definitiv Es wird unsere oben genannten Anforderungen nicht beeinflussen.
Instanz:Code:
<?php //php的时间是以秒算。js的时间以毫秒算 date_default_timezone_set("Asia/Hong_Kong");//地区 //配置每天的活动时间段 $starttimestr = "09:00:00"; $endtimestr = "18:30:00"; $starttime = strtotime($starttimestr); $endtime = strtotime($endtimestr); $nowtime = time(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP实时倒计时!</title> <script language="JavaScript"> <!-- // var EndTime=<?=$endtime*1000?>; var NowTime = new Date(); //计算出服务器和客户端的时间差。 var dTime = <?=$nowtime*1000?>-NowTime.getTime(); function GetRTime(){ var NowTime = new Date(); var nMS = EndTime - NowTime.getTime()-dTime; var nH=Math.floor(nMS/(1000*60*60)) % 24; var nM=Math.floor(nMS/(1000*60)) % 60; var nS=Math.floor(nMS/1000) % 60; document.getElementById("RemainH").innerHTML=nH; document.getElementById("RemainM").innerHTML=nM; document.getElementById("RemainS").innerHTML=nS; if(nMS>5*59*1000&&nMS<=5*60*1000) { alert("还有最后五分钟!"); } setTimeout("GetRTime()",1000); } window.onload=GetRTime; // --> </script> </head> <body> <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1> </body> </html>Beispiel 2:
Einige der oben genannten Fehler geändert
Code:
<?php //php的时间是以秒算。js的时间以毫秒算 date_default_timezone_set("Asia/Hong_Kong");//地区 //配置每天的活动时间段 $starttimestr = "09:00:00"; $endtimestr = "18:30:00"; $starttime = strtotime($starttimestr); $endtime = strtotime($endtimestr); $nowtime = time(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP实时倒计时!</title> <script language="JavaScript"> <!-- // var EndTime=<?=$endtime*1000?>; var NowTime = new Date(); //计算出服务器和客户端的时间差。 var dTime = NowTime.getTime()-<?=$nowtime*1000?>; var runtimes = 0; function GetRTime(){ var NowTime = new Date(); var dTimeNew = NowTime.getTime()-<?=$nowtime*1000?>; var dTimesM = Math.abs(Math.floor((dTimeNew-runtimes*1000-dTime)/1000));//客户端时间和服务器当前时间的差 if (dTimesM>1) {//如果用户修改了客户端时间,就重新load本页 window.location.reload(); } var nMS = EndTime - NowTime.getTime()+dTime; var nH=Math.floor(nMS/(1000*60*60)) % 24; var nM=Math.floor(nMS/(1000*60)) % 60; var nS=Math.floor(nMS/1000) % 60; document.getElementById("RemainH").innerHTML=nH; document.getElementById("RemainM").innerHTML=nM; document.getElementById("RemainS").innerHTML=nS; if(nMS>5*59*1000&&nMS<=5*60*1000) { alert("还有最后五分钟!"); } runtimes++; setTimeout("GetRTime()",1000); } window.onload=GetRTime; // --> </script> </head> <body> <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1> </body> </html>Beispiel 3:
Die Idee ist anders und viel einfacher.
Code:
<?php //php的时间是以秒算。js的时间以毫秒算 date_default_timezone_set("Asia/Hong_Kong");//地区 //配置每天的活动时间段 $starttimestr = "09:00:00"; $endtimestr = "13:50:00"; $starttime = strtotime($starttimestr); $endtime = strtotime($endtimestr); $nowtime = time(); if ($nowtime<$starttime){ die("活动还没开始,活动时间是:{$starttimestr}至{$endtimestr}"); } $lefttime = $endtime-$nowtime; //实际剩下的时间(秒) ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP实时倒计时!</title> <script language="JavaScript"> <!-- // var runtimes = 0; function GetRTime(){ var nMS = <?=$lefttime?>*1000-runtimes*1000; var nH=Math.floor(nMS/(1000*60*60))%24; var nM=Math.floor(nMS/(1000*60)) % 60; var nS=Math.floor(nMS/1000) % 60; document.getElementById("RemainH").innerHTML=nH; document.getElementById("RemainM").innerHTML=nM; document.getElementById("RemainS").innerHTML=nS; if(nMS>5*59*1000&&nMS<=5*60*1000) { alert("还有最后五分钟!"); } runtimes++; setTimeout("GetRTime()",1000); } window.onload=GetRTime; // --> </script> </head> <body> <h1><strong id="RemainH">XX</strong>:<strong id="RemainM">XX</strong>:<strong id="RemainS">XX</strong></h1> </body> </html>
Das Obige ist Der gesamte Inhalt dieses Artikels soll für das Studium aller hilfreich sein.
Verwandte Empfehlungen:
Countdown und SMS-Countdown-Funktionen
CountdownAnimationseffekt-Beispielfreigabe über Date-Objekt
CountdownFunktion
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie man die Echtzeit-Countdown-Funktion in PHP implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!