สอบถามเรื่องการ update เวลาครับ อยากให้ update ทุกๆเที่ยงคืน แบบ auto อ่ะครับ
นำ algorithm จาก คห 1 มาใช้ เพิ่มเติม สร้าง backup เวลาไว้เป็นเงื่อนไขในการตรวจสอบ
Code (PHP)
// เดาเอาว่าใช้ codeigniter ในการเขียน
$cur_time = time(); // ใช้ตัวแปรเก็บเวลา เพื่อไม่ใช้คำสั่ง time() พร่ำเพรื่อ เพราะมีผลทำให้ system time ช้าได้
$f=file_get_contents($fn = FCPATH . 'last_update.txt'); // เรียกเวลา ครั้งก่อน มาตรวจสอบ
$last_date=($a=($f!==false? trim($f) : '')) > '' ? $a : date('Y-m-d', strtotime('-1day', $cur_time));
// ถ้าไม่เคย update กำหนดจากวันที่ปัจจุบัน - 1 วัน
$target_time = strtotime('+1day', $last_date); // กำหนด target จากวันที่ครั้งก่อน + 1 วัน
if($cur_time > $target_time){ // ตรวจสอบเวลาปัจจุบัน กับ เวลาเป้าหมาย
file_put_contents($fn, date('Y-m-d', $cur_time)); // เซฟ backup วันที่ีupdate
redirect(base_url('guest/reset_update')); // run program update
}
ปล. จะใช้ database เก็บ backup เวลาก็ได้ ตามสดวก
ถ้าเป็นไฟล์ ก็อย่าลืม permission ให้ไฟล์ด้วย
ประวัติการแก้ไข 2018-12-26 11:53:22 2018-12-26 11:53:56 2018-12-26 11:57:22
Date :
2018-12-26 10:28:20
By :
Chaidhanan
ขอบคุณครับผม
Date :
2018-12-26 11:45:25
By :
teedesign
ได้แล้วครับ เปลี่ยนเงื่อนไขนิดเดียวครับผม แต่อ้างอิงเวลา Sever ครับผม
view
<?php
$date_now = date("Y-m-d H:i:s",time());
$date_end = date("Y-m-d 23:59:58",time());
if($date_now > $date_end){
redirect(base_url('guest/reset_update'));
}
?>
ประวัติการแก้ไข 2018-12-30 10:49:42 2018-12-30 11:23:27
Date :
2018-12-30 10:48:44
By :
teedesign
ระวังบางวันมันจะไม่อัพเดทเอานะครับ
ตามโค๊ดนี้มันหมายถีง โปรแกรมต้องเปิดทำงานช่วงเวลา 23:59:58 - 23:59:59.000 นะครับ 2 วินาที เท่านั้น
ไม่คิดเพื่อ เกิดการ delay เพราะ server หยุดการทำงานบ้างเลยเหรอครับ
Date :
2018-12-30 12:42:11
By :
Chaidhanan
Load balance : Server 03