835   7 ถามการใช้ realtime หรือ มีแนวอื่นไหมคับ



pachara


พลังงานการช่วยเหลือ
( Level 1 )


คะแนนขอบคุณจากสมาชิก
( 2 )


ตอบกระทู้ ( 7 )
เขียนบทความ ( 0 )

ถ้าเราจะเช็คเวลา เช่น 8 โมง ให้พิม "8" แล้ว พอเวลาผ่านไป 15 นาทีให้พิม "8.15" ควรใช้แนวทางไหน ดี คับ
ความคิดเห็นที่ 1
อ้างอิงความเห็น


bamossza


พลังงานการช่วยเหลือ
( Level 3 )


คะแนนขอบคุณจากสมาชิก
( 15 )


ตอบกระทู้ ( 106 )
เขียนบทความ ( 27 )

ต้องใช้หลักการ JavaScript หรือ Jquery เข้ามาช่วยครับ
ความคิดเห็นที่ 2
อ้างอิงความเห็น


bamossza


พลังงานการช่วยเหลือ
( Level 3 )


คะแนนขอบคุณจากสมาชิก
( 15 )


ตอบกระทู้ ( 106 )
เขียนบทความ ( 27 )

มีอีกวิธีครับ การใช้ ฟังก์ชั่น set_time_limit() ของ php เข้ามาช่วยครับ

โดยปกติแล้ว การประมวลเพจหนึ่งๆ ถูกกำหนดให้ทำงานได้ภายในเวลาที่กำหนด ซึ่งดูได้จาก max_execution_time ใน php.ini ซึ่งโดยปกติแล้ว จะถูกตั้งไว้ที่ 30 วินาที แต่ถ้าเราต้องการที่จะรันสคริปต์ ที่มีขนาดใหญ่ ใช้เวลานาน เช่นการแสดงข้อมูลจากฐานข้อมูลที่มีขนาดใหญ่ หรือการวนลูปส่งเมล์ไปหาคนจำนวนมากๆ เราก็อาจต้องใช้เวลาในการประมวลผลเพจนานตามไปด้วย ซึ่งอาจจะนานเกินกว่าที่กำหนดไว้ได้ ทำให้เกิด error

วิธีแก้ไขวิธีหนึ่งก็คือทำการเพิ่มเวลาการประมวลผลให้กับ php ด้วยคำสั่ง

void set_time_limit (int seconds)


วิธีนี้มีข้อควรระวังคือ คำสั่งนี้จะใช้กับ server ที่กำหนดให้ safe mode เป็น on ไม่ได้ครับ
  • set_time_limit(0) เป็นการกำหนดให้ server run ได้ ตราบนานเท่านาน
  • การที่มีการกำหนดค่านี้ไว้ ก็เพื่อไม่ให้ server ทำงานหนักจนเกินไป หาก script ทำงานผิดพลาด เช่น การวนลูปที่ไม่มีจุดจบ เป็นต้น ซึ่งอาจจะทำให้ Server เสียหายได้

โค้ดตัวอย่างที่ผมลองทำขึ้นนะครับ
Code (PHP)
date_default_timezone_set("Asia/Bangkok");
ob_end_clean();

set_time_limit(0);
$i = 0;
while (true) {

echo nl2br('รอบที่ => '.++$i.' '.date('H:i:s')."\n");
flush();
sleep(1);
}


ซึ่งผลลัพธ์ก็จะได้ดังตัวอย่าง


ลองนำไปประยุกต์นะครับcool
ความคิดเห็นที่ 3
อ้างอิงความเห็น


pachara


พลังงานการช่วยเหลือ
( Level 1 )


คะแนนขอบคุณจากสมาชิก
( 2 )


ตอบกระทู้ ( 7 )
เขียนบทความ ( 0 )

จะลองไปทำดูคับ ขอบคุนคับ
ความคิดเห็นที่ 4
อ้างอิงความเห็น


bamossza


พลังงานการช่วยเหลือ
( Level 3 )


คะแนนขอบคุณจากสมาชิก
( 15 )


ตอบกระทู้ ( 106 )
เขียนบทความ ( 27 )

laughingcool
ความคิดเห็นที่ 5
อ้างอิงความเห็น


pachara


พลังงานการช่วยเหลือ
( Level 1 )


คะแนนขอบคุณจากสมาชิก
( 2 )


ตอบกระทู้ ( 7 )
เขียนบทความ ( 0 )

อ้างอิงจากความเห็นที่ 2

ลองทำดูแล้วคับ แต่ไม่เข้าใจ while ลูป แค่ echo มาดูเฉยๆใช่ไหมคับ
ความคิดเห็นที่ 6
อ้างอิงความเห็น


pachara


พลังงานการช่วยเหลือ
( Level 1 )


คะแนนขอบคุณจากสมาชิก
( 2 )


ตอบกระทู้ ( 7 )
เขียนบทความ ( 0 )

Code (PHP)
date_default_timezone_set("Asia/Bangkok");
ob_end_clean();
ignore_user_abort(true);
set_time_limit(0);
$i = 0;
while (true) {
echo nl2br('รอบที่ => '.++$i.' '.date('H:i:s')."\n");
if (date('H')==15&&date('i')==39) {
// จะให้ทำอะไร
}else if (date('H')==15&&date('i')==40) {
// จะให้ทำอะไร
}
flush();
sleep(1);
}

ทดสอบแล้วใช้ได้จริงคับ

ความคิดเห็นที่ 7
อ้างอิงความเห็น


bamossza


พลังงานการช่วยเหลือ
( Level 3 )


คะแนนขอบคุณจากสมาชิก
( 15 )


ตอบกระทู้ ( 106 )
เขียนบทความ ( 27 )

อ้างอิงจากความเห็นที่ 6

สรุปทำได้แล้วไช่ไหมครับ laughing
------------- ปิดกระทู้ นะครับ---------------

แสดงความเห็น

อัพโหลดรูปภาพ..คลิก *** เพื่อความปลอดภัยในด้านสิทธิ ไม่อนุญาติให้นำลิ้งรูปภาพจากที่อื่นมาแปะ ถ้าพบเจอ ลบกระทู้ ทันที ***

Back to Top