Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > แสดงการนับเวลาถอยหลัง โดยใช้เวลาจากเครื่อง server ไม่ใช่เครืองตัวเอง



 

แสดงการนับเวลาถอยหลัง โดยใช้เวลาจากเครื่อง server ไม่ใช่เครืองตัวเอง

 



Topic : 127773



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์




ขอวิธีแสดงการนับเวลาถอยหลัง โดยใช้เวลาจากเครื่อง server ครับ ไม่ใช่เครืองตัวเอง



Tag : PHP, Ms SQL Server 2012, JavaScript, IIS, Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-05-27 16:23:47 By : angelkiller9 View : 5036 Reply : 8
 

 

No. 1



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ถ้าใช้เครื่องเซอร์เวอร์ตลอด อาจทำให้เวลาของเซอร์เวอร์เพี้ยนไปมากได้
เพราะจะต้องเข้าถึง system time ตลอด ซึ่งใช้ทรัพยากรสูง
ซึ่งกว่าจะถึงเวลา reset time ใหม่ ก็อาจจะได้ข้อมูลเวลาที่ไม่ตรงได้

ให้ใช้เครื่อง client โดยใช้การเปรียบเทียบโซนเวลาเอา
เช่น เครื่องเซอร์เวอร์อยู่ gmt + 5 แต่ client อยู่ gmt + 7
ก็ จะได้ เวลา เครื่อง เซอร์เวอร์ เท่ากับ เวลาเครื่อง client - 2






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-27 18:25:51 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


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
 

 

No. 3



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-05-27 18:25:51
รายละเอียดของการตอบ ::
ขอบคุณครับ

ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.v เมื่อวันที่ 2017-05-28 11:08:57
รายละเอียดของการตอบ ::
ขอบคุณครับ

อ่อ ขอบคุณมากๆ ครับเพิ่งรู้ว่าจะทำให้ server ทำงานหนัก
พอดีว่าจะทำระบบประมาณข้อสอบออนไลน์ (ไม่เชิงออนไลน์ แต่เป็นภายในเครือข่าย) ทีนี้กลัวว่าถ้าใช้จากเครื่องตัวเอง อาจจะทำให้เวลาไม่เท่ากันหรือเปล่า ทุกเครื่องหรือเปล่า เพราะการสอบอาจจะมีการปิด Internet นะครับ แต่เชื่อมต่อภายในเครือข่ายเดียวกัน เวลาเครื่องคอมที่ใช้สอบแต่ละเครื่องอาจจะไม่เท่ากัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-29 13:08:10 By : angelkiller9
 


 

No. 4



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


งั้นก็อาจจะลองหลักการนี้ดู
เอาวันเวลาจาก 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
 


 

No. 5



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : mr.v เมื่อวันที่ 2017-05-29 23:23:08
รายละเอียดของการตอบ ::
แล้วพอจะมีวิธีไหนไหมอะครับ ที่จะเขียนให้ผู้สอบเห็นว่า เวลา กำลังลดลงเรื่อยๆ แบบวินาที โดยที่ไม่ถูกดีดออก เช่น เวลาสอบ 2 ชั่วโมง ครึ่ง เมื่อคลิกสอบ จะส่งค่าเวลาสิ้นสุดไปยัง javascript แล้ว countdown ลงเรื่อยๆทีละ 1 วินาที แต่ทีนี้ เหมือนกับว่ามันใช้ทรัพยากรเปลืองอย่างที่คุณว่าอะครับ มันเลยดีดออก เมื่อผ่านไปประมาณ 4-5 นาที แต่จุดประสงค์ของผู้ว่าจ้างต้องการให้แสดงเวลาลดลงเรื่อยๆ ให้ผู้สอบเห็นครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-06-26 14:57:30 By : angelkiller9
 


 

No. 6



โพสกระทู้ ( 411 )
บทความ ( 0 )



สถานะออฟไลน์


ลองประยุกต์ดูนะครับ
การ Synchronize เวลาด้วย Ajax


ประวัติการแก้ไข
2017-06-26 16:52:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-06-26 16:50:56 By : goragod
 


 

No. 7



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : angelkiller9 เมื่อวันที่ 2017-06-26 14:57:30
รายละเอียดของการตอบ ::
ก็ทำอย่างที่ผมแนะนำไว้แล้วนั่นแหละ ลองค่อยๆทำความเข้าใจใหม่ครับ มันไม่แปลกประหลาดอะไรหรอก เอา ajax เรียกเวลาจาก server เหมือนเดิม ต่างจากเดิมแค่คั่นเวลาเพิ่มเข้าไปให้มันดีเลย์เยอะๆหน่อยก่อนจะเรียกครั้งต่อไป เช่นแทนที่จะเรียกทุกวินาที หรือไม่กี่วินาที ก็เอาสัก 3 นาทีเรียกที ผมบอกไว้หมดแล้วคุณลองทำความเข้าใจเอาในหลักการ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-06-26 17:41:31 By : mr.v
 


 

No. 8



โพสกระทู้ ( 318 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : goragod เมื่อวันที่ 2017-06-26 16:50:56
รายละเอียดของการตอบ ::
ขอบคุณค๊าบ


ตอบความคิดเห็นที่ : 7 เขียนโดย : mr.v เมื่อวันที่ 2017-06-26 17:41:31
รายละเอียดของการตอบ ::
ขอบคุณค๊าบ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-06-26 23:10:36 By : angelkiller9
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : แสดงการนับเวลาถอยหลัง โดยใช้เวลาจากเครื่อง server ไม่ใช่เครืองตัวเอง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่