 |
แสดงการนับเวลาถอยหลัง โดยใช้เวลาจากเครื่อง server ไม่ใช่เครืองตัวเอง |
|
 |
|
|
 |
 |
|
ถ้าใช้เครื่องเซอร์เวอร์ตลอด อาจทำให้เวลาของเซอร์เวอร์เพี้ยนไปมากได้
เพราะจะต้องเข้าถึง system time ตลอด ซึ่งใช้ทรัพยากรสูง
ซึ่งกว่าจะถึงเวลา reset time ใหม่ ก็อาจจะได้ข้อมูลเวลาที่ไม่ตรงได้
ให้ใช้เครื่อง client โดยใช้การเปรียบเทียบโซนเวลาเอา
เช่น เครื่องเซอร์เวอร์อยู่ gmt + 5 แต่ client อยู่ gmt + 7
ก็ จะได้ เวลา เครื่อง เซอร์เวอร์ เท่ากับ เวลาเครื่อง client - 2
|
 |
 |
 |
 |
Date :
2017-05-27 18:25:51 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
https://www.w3schools.com/howto/howto_js_countdown.asp
Code (JavaScript)
<p id="demo"></p>
<script>
// Set the date we're counting down to
var countDownDate = new Date("2017-05-29 00:00:00").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now an the count down date
var distance = countDownDate - now;
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Output the result in an element with id="demo"
document.getElementById("demo").innerHTML = days + "d " + hours + "h "
+ minutes + "m " + seconds + "s ";
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = "EXPIRED";
}
}, 1000);
</script>
https://www.thoughtco.com/use-mktime-to-create-countdown-2693921
Code (PHP)
<?php
$target = mktime(0, 0, 0, 2, 10, 2017) ;
$today = time () ;
$difference =($target-$today) ;
$days =(int) ($difference/86400) ;
print "Our event will occur in $days days";
ไม่รู้ว่า count down แบบไหน
ถ้าแบบมีตัวเลขนับถอยลงไปเรื่อยๆมีการอัพเดทวินาที นาที อย่างนั้นยังไงก็ต้องพึ่ง js และวันที่เป้าหมายก็ต้องเป็นอนาคต ซึ่งจะไม่สามารถเอาจาก php ได้
แม้จะเอาวันที่เวลาปัจจุบันจาก php ได้เพื่อมาหักคำณวนก็ต้องใช้ ajax เรียกทุกวินาที ซึ่งมันสิ้นเปลืองอย่างมาก ทั้ง server ทำงานหนักและอาจถูกดีดออกไม่มีการ response ก็ได้
เหมือนพวก chat สมัยก่อนที่ใช้ refresh/ajax ทุกวินาที คุยๆไปไม่นานก็ค้างที่หน้านั้น แชทใหม่ไม่เข้าแบบนี้.
แต่ถ้า count down แบบเปิดมาทีนึงเห็นวันที่เวลาว่าเหลือกี่วันถึงเป้าหมายอย่างนี้พอได้ ก็ลองเอาตัวอย่างล่างไปแปลงดู
|
 |
 |
 |
 |
Date :
2017-05-28 11:08:57 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งั้นก็อาจจะลองหลักการนี้ดู
เอาวันเวลาจาก server มาเป็นหลักตอนโหลดหน้า
จากนั้นเอา js กำหนดให้มันเริ่ม date object โดยใช้วันเวลานี้แล้วนับถอยหลังโดยใช้โค้ด js ล้วนๆ.
ทีนี้ อาจจะทุกๆ 3 นาที ก็กำหนดว่าพอครบทุก 3 นาทีแล้วให้ ajax request ไปร้องขอเวลาจาก server ทีนึง เพื่อเอามาเทียบเคียงหรือ sync ให้มันตรงกัน ถ้าไม่ตรงก็เอาจาก server เป็นหลัก.
คล้ายๆหลักการ heart beat ของ WordPress แต่อันนั้นเขาไว้ตรวจ login.
แบบนี้มันก็พอเบาการทำงานลงได้
|
 |
 |
 |
 |
Date :
2017-05-29 23:23:08 |
By :
mr.v |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|